<rss
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      version="2.0"
    >
      <channel>
        <title><![CDATA[ANIMA]]></title>
        <description><![CDATA[Vita, familia et proprietas.]]></description>
        <link>https://anima.npub.pro/tag/tecnologia/</link>
        <atom:link href="https://anima.npub.pro/tag/tecnologia/rss/" rel="self" type="application/rss+xml"/>
        <itunes:new-feed-url>https://anima.npub.pro/tag/tecnologia/rss/</itunes:new-feed-url>
        <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
        <itunes:subtitle><![CDATA[Vita, familia et proprietas.]]></itunes:subtitle>
        <itunes:type>episodic</itunes:type>
        <itunes:owner>
          <itunes:name><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:name>
          <itunes:email><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:email>
        </itunes:owner>
            
      <pubDate>Tue, 27 May 2025 20:21:21 GMT</pubDate>
      <lastBuildDate>Tue, 27 May 2025 20:21:21 GMT</lastBuildDate>
      
      <itunes:image href="https://image.nostr.build/59b28ab162c8056a5774cf5ff6cf2002ba76c13ead9cdd394a832216bdc0fd9f.jpg" />
      <image>
        <title><![CDATA[ANIMA]]></title>
        <link>https://anima.npub.pro/tag/tecnologia/</link>
        <url>https://image.nostr.build/59b28ab162c8056a5774cf5ff6cf2002ba76c13ead9cdd394a832216bdc0fd9f.jpg</url>
      </image>
      <item>
      <title><![CDATA[Agendando Processos Futuros no Linux]]></title>
      <description><![CDATA[Três alternativas para agendar tarefas e processos para o futuro através do Linux.]]></description>
             <itunes:subtitle><![CDATA[Três alternativas para agendar tarefas e processos para o futuro através do Linux.]]></itunes:subtitle>
      <pubDate>Tue, 27 May 2025 20:21:21 GMT</pubDate>
      <link>https://anima.npub.pro/post/1748375084756/</link>
      <comments>https://anima.npub.pro/post/1748375084756/</comments>
      <guid isPermaLink="false">naddr1qqxnzde58qenwdfs8q6rwdfkqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28xrjdhq</guid>
      <category>Linux</category>
      
        <media:content url="https://image.nostr.build/8b43856f41b0a9360c7d97ff343d1b9e5e430ace099550fc0d9a324f23520632.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/8b43856f41b0a9360c7d97ff343d1b9e5e430ace099550fc0d9a324f23520632.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzde58qenwdfs8q6rwdfkqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28xrjdhq</noteId>
      <npub>npub1d0jucp5jqt799kjuqxzs4cj377tew43dpcr60fzyvcltc5jemtcqryyvcy</npub>
      <dc:creator><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></dc:creator>
      <content:encoded><![CDATA[<h1>At</h1>
<p><code>at</code> é uma ferramenta de agendamento de tarefas em Linux usada para executar <strong>comandos únicos</strong> em um <strong>horário e data específicos</strong>. Diferente do <code>cron</code>, que serve para tarefas <strong>recorrentes</strong>, o <code>at</code> executa <strong>uma única vez</strong>.</p>
<h2><strong>Como usar o <code>at</code></strong></h2>
<h3>1. <strong>Verifique se o <code>at</code> está instalado</strong></h3>
<pre><code class="language-bash">which at
</code></pre>
<p>Se não estiver instalado:</p>
<pre><code class="language-bash">sudo apt install at
</code></pre>
<p>E inicie o serviço (caso necessário):</p>
<pre><code class="language-bash">sudo systemctl enable --now atd
</code></pre>
<h3>2. <strong>Agendar um comando</strong></h3>
<pre><code class="language-bash">at 10:00 AM tomorrow
</code></pre>
<p>Você será levado a um prompt interativo. Digite o comando desejado e finalize com <code>Ctrl + D</code>.</p>
<h4>Exemplo 1:</h4>
<pre><code class="language-bash">at 09:00 AM next Monday
</code></pre>
<p>(Entrada do usuário no prompt do <code>at</code>)</p>
<pre><code>echo "Relatório pronto" &gt;&gt; ~/relatorio.txt
Ctrl + D
</code></pre>
<p>Resultado: O trecho "relatório pronto" será incluído no documento relatorio.txt.</p>
<h4>Exemplo 2:</h4>
<pre><code class="language-bash">at 21:00 Apr 15
</code></pre>
<p>Entrada no prompt:</p>
<pre><code>notify-send "Hora de fazer backup!"
Ctrl + D
</code></pre>
<p>Resultado: Às 21h do dia 15 de abril, o sistema exibirá uma notificação.</p>
<h2><strong>Formatos de Data e Hora Válidos</strong></h2>
<ul>
<li><p><code>now + 1 minute</code></p>
</li>
<li><p><code>midnight</code></p>
</li>
<li><p><code>tomorrow</code></p>
</li>
<li><p><code>5pm</code></p>
</li>
<li><p><code>08:30</code></p>
</li>
<li><p><code>7:00am next friday</code></p>
</li>
<li><p><code>noon + 2 days</code></p>
</li>
</ul>
<h2><strong>Visualizar tarefas agendadas</strong></h2>
<pre><code class="language-bash">atq
</code></pre>
<h2><strong>Remover uma tarefa agendada</strong></h2>
<pre><code class="language-bash">atrm &lt;número_da_tarefa&gt;
</code></pre>
<p>Você encontra o número da tarefa com <code>atq</code>.</p>
<hr>
<h1>cron</h1>
<p>O <code>cron</code> é um utilitário de agendamento de tarefas baseado no tempo. Permite executar comandos ou scripts automaticamente em horários específicos. Ele depende do daemon <code>crond</code>, que deve estar ativo e em execução contínua no sistema.</p>
<h2>Arquivo de configuração:</h2>
<ul>
<li><p>Cada usuário pode editar seu próprio agendador com:</p>
<pre><code class="language-bash">crontab -e
</code></pre>
</li>
<li><p>O formato padrão de uma linha no crontab:</p>
<pre><code>m h dom mon dow comando
</code></pre>
</li>
</ul>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
<th>Valores possíveis</th>
</tr>
</thead>
<tbody><tr>
<td>m</td>
<td>Minuto</td>
<td>0–59</td>
</tr>
<tr>
<td>h</td>
<td>Hora</td>
<td>0–23</td>
</tr>
<tr>
<td>dom</td>
<td>Dia do mês</td>
<td>1–31</td>
</tr>
<tr>
<td>mon</td>
<td>Mês</td>
<td>1–12</td>
</tr>
<tr>
<td>dow</td>
<td>Dia da semana</td>
<td>0–6 (0 = Domingo)</td>
</tr>
<tr>
<td>comando</td>
<td>Comando a executar</td>
<td>Qualquer comando shell válido</td>
</tr>
</tbody></table>
<h3>Exemplos:</h3>
<ul>
<li><p>Executar um script a cada minuto:</p>
<pre><code class="language-bash">* * * * * /usr/local/bin/execute/this/script.sh
</code></pre>
</li>
<li><p>Fazer backup no dia 10 de junho às 08:30:</p>
<pre><code class="language-bash">30 08 10 06 * /home/sysadmin/full-backup
</code></pre>
</li>
<li><p>Backup todo domingo às 5h da manhã:</p>
<pre><code class="language-bash">0 5 * * 0 tar -zcf /var/backups/home.tgz /home/
</code></pre>
</li>
</ul>
<h3>Limitações:</h3>
<p>Tarefas agendadas com <code>cron</code> <strong>não são executadas</strong> se o computador estiver <strong>desligado ou suspenso</strong> no horário programado. O comando é simplesmente ignorado.<br>Use <code>cron</code> para tarefas <strong>com data/hora exatas</strong>.</p>
<hr>
<h1>anacron</h1>
<p>O <code>anacron</code> é uma alternativa ao <code>cron</code> voltada para sistemas que não ficam ligados o tempo todo, como notebooks e desktops. Ele garante a execução de tarefas periódicas (diárias, semanais, mensais) <strong>assim que possível</strong> após o sistema ser ligado, caso tenham sido perdidas. Use <code>anacron</code> para tarefas <strong>periódicas tolerantes a atrasos</strong>.</p>
<h3>Verificação da instalação:</h3>
<pre><code class="language-bash">anacron -V
</code></pre>
<h3>Instalação (caso necessário):</h3>
<pre><code class="language-bash">sudo apt update
sudo apt install anacron
</code></pre>
<h2>Arquivo de configuração:</h2>
<pre><code>/etc/anacrontab
</code></pre>
<p>Acessado com:</p>
<pre><code>sudo nano /etc/anacrontab
</code></pre>
<p>Formato de cada linha:</p>
<pre><code>PERIOD  DELAY  IDENT  COMMAND
</code></pre>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody><tr>
<td>PERIOD</td>
<td>Intervalo em dias (1 = diário, 7 = semanal)</td>
</tr>
<tr>
<td>DELAY</td>
<td>Minutos a esperar após o boot</td>
</tr>
<tr>
<td>IDENT</td>
<td>Nome identificador da tarefa</td>
</tr>
<tr>
<td>COMMAND</td>
<td>Comando ou script a ser executado</td>
</tr>
</tbody></table>
<h3>Exemplo:</h3>
<pre><code class="language-bash">1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh
</code></pre>
<p>Executa o script uma vez por dia, 3 minutos após o sistema ser ligado.</p>
<blockquote>
<p><strong>Nota:</strong> Não é necessário usar <code>run-parts</code> nem <code>cron.daily</code> para tarefas personalizadas. Basta apontar diretamente para o script desejado. O <code>run-parts</code> só deve ser usado quando se deseja executar todos os scripts de um diretório.</p>
</blockquote>
<h3>Ativação do serviço:</h3>
<pre><code class="language-bash">sudo systemctl enable --now anacron
</code></pre>
<h3>Verificação de status:</h3>
<pre><code class="language-bash">systemctl status anacron
</code></pre>
<h3>Logs de execução:</h3>
<pre><code class="language-bash">grep anacron /var/log/syslog
</code></pre>
<h2><code>/etc/anacrontab</code>: Arquivo de Configuração do <code>anacron</code></h2>
<p>O arquivo <code>/etc/anacrontab</code> define tarefas periódicas a serem executadas pelo <code>anacron</code>, garantindo que comandos sejam executados <strong>mesmo que o computador esteja desligado no horário originalmente programado</strong>.</p>
<h3>Cabeçalho Padrão</h3>
<pre><code class="language-bash">SHELL=/bin/sh
HOME=/root
LOGNAME=root
</code></pre>
<ul>
<li><p><code>SHELL</code>: Shell padrão utilizado para executar os comandos.</p>
</li>
<li><p><code>HOME</code>: Diretório home usado durante a execução.</p>
</li>
<li><p><code>LOGNAME</code>: Usuário associado à execução das tarefas.</p>
</li>
</ul>
<h3>Entradas Padrão do Sistema</h3>
<pre><code class="language-bash">1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
</code></pre>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Significado</th>
</tr>
</thead>
<tbody><tr>
<td><code>1</code></td>
<td>Executa a tarefa <strong>diariamente</strong> (a cada 1 dia)</td>
</tr>
<tr>
<td><code>5</code></td>
<td>Espera <strong>5 minutos após o boot</strong></td>
</tr>
<tr>
<td><code>cron.daily</code></td>
<td>Identificador da tarefa (usado nos logs)</td>
</tr>
<tr>
<td><code>run-parts</code></td>
<td>Executa todos os scripts dentro do diretório</td>
</tr>
</tbody></table>
<h4>Diretórios utilizados:</h4>
<ul>
<li><p><code>/etc/cron.daily</code>: scripts executados uma vez por dia</p>
</li>
<li><p><code>/etc/cron.weekly</code>: scripts semanais</p>
</li>
<li><p><code>/etc/cron.monthly</code>: scripts mensais</p>
</li>
</ul>
<blockquote>
<p>O comando <code>run-parts</code> executa automaticamente todos os scripts executáveis localizados nesses diretórios.</p>
</blockquote>
<h4>Personalização</h4>
<p>Para adicionar tarefas personalizadas ao <code>anacron</code>, basta adicionar novas linhas com o formato:</p>
<pre><code>PERIOD  DELAY  IDENT  COMMAND
</code></pre>
<p>Exemplo:</p>
<pre><code class="language-bash">1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh
</code></pre>
<p>Executa o script <code>limpar_tmp.sh</code> diariamente, com 3 minutos de atraso após o boot.</p>
<blockquote>
<p><strong>Importante:</strong> Não é necessário — nem recomendado — usar <code>run-parts</code> quando a intenção é executar um script individual. O <code>run-parts</code> espera um <strong>diretório</strong> e ignora arquivos individuais. Usar <code>run-parts</code> com um script individual causará falha na execução.</p>
</blockquote>
]]></content:encoded>
      <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
      <itunes:summary><![CDATA[<h1>At</h1>
<p><code>at</code> é uma ferramenta de agendamento de tarefas em Linux usada para executar <strong>comandos únicos</strong> em um <strong>horário e data específicos</strong>. Diferente do <code>cron</code>, que serve para tarefas <strong>recorrentes</strong>, o <code>at</code> executa <strong>uma única vez</strong>.</p>
<h2><strong>Como usar o <code>at</code></strong></h2>
<h3>1. <strong>Verifique se o <code>at</code> está instalado</strong></h3>
<pre><code class="language-bash">which at
</code></pre>
<p>Se não estiver instalado:</p>
<pre><code class="language-bash">sudo apt install at
</code></pre>
<p>E inicie o serviço (caso necessário):</p>
<pre><code class="language-bash">sudo systemctl enable --now atd
</code></pre>
<h3>2. <strong>Agendar um comando</strong></h3>
<pre><code class="language-bash">at 10:00 AM tomorrow
</code></pre>
<p>Você será levado a um prompt interativo. Digite o comando desejado e finalize com <code>Ctrl + D</code>.</p>
<h4>Exemplo 1:</h4>
<pre><code class="language-bash">at 09:00 AM next Monday
</code></pre>
<p>(Entrada do usuário no prompt do <code>at</code>)</p>
<pre><code>echo "Relatório pronto" &gt;&gt; ~/relatorio.txt
Ctrl + D
</code></pre>
<p>Resultado: O trecho "relatório pronto" será incluído no documento relatorio.txt.</p>
<h4>Exemplo 2:</h4>
<pre><code class="language-bash">at 21:00 Apr 15
</code></pre>
<p>Entrada no prompt:</p>
<pre><code>notify-send "Hora de fazer backup!"
Ctrl + D
</code></pre>
<p>Resultado: Às 21h do dia 15 de abril, o sistema exibirá uma notificação.</p>
<h2><strong>Formatos de Data e Hora Válidos</strong></h2>
<ul>
<li><p><code>now + 1 minute</code></p>
</li>
<li><p><code>midnight</code></p>
</li>
<li><p><code>tomorrow</code></p>
</li>
<li><p><code>5pm</code></p>
</li>
<li><p><code>08:30</code></p>
</li>
<li><p><code>7:00am next friday</code></p>
</li>
<li><p><code>noon + 2 days</code></p>
</li>
</ul>
<h2><strong>Visualizar tarefas agendadas</strong></h2>
<pre><code class="language-bash">atq
</code></pre>
<h2><strong>Remover uma tarefa agendada</strong></h2>
<pre><code class="language-bash">atrm &lt;número_da_tarefa&gt;
</code></pre>
<p>Você encontra o número da tarefa com <code>atq</code>.</p>
<hr>
<h1>cron</h1>
<p>O <code>cron</code> é um utilitário de agendamento de tarefas baseado no tempo. Permite executar comandos ou scripts automaticamente em horários específicos. Ele depende do daemon <code>crond</code>, que deve estar ativo e em execução contínua no sistema.</p>
<h2>Arquivo de configuração:</h2>
<ul>
<li><p>Cada usuário pode editar seu próprio agendador com:</p>
<pre><code class="language-bash">crontab -e
</code></pre>
</li>
<li><p>O formato padrão de uma linha no crontab:</p>
<pre><code>m h dom mon dow comando
</code></pre>
</li>
</ul>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
<th>Valores possíveis</th>
</tr>
</thead>
<tbody><tr>
<td>m</td>
<td>Minuto</td>
<td>0–59</td>
</tr>
<tr>
<td>h</td>
<td>Hora</td>
<td>0–23</td>
</tr>
<tr>
<td>dom</td>
<td>Dia do mês</td>
<td>1–31</td>
</tr>
<tr>
<td>mon</td>
<td>Mês</td>
<td>1–12</td>
</tr>
<tr>
<td>dow</td>
<td>Dia da semana</td>
<td>0–6 (0 = Domingo)</td>
</tr>
<tr>
<td>comando</td>
<td>Comando a executar</td>
<td>Qualquer comando shell válido</td>
</tr>
</tbody></table>
<h3>Exemplos:</h3>
<ul>
<li><p>Executar um script a cada minuto:</p>
<pre><code class="language-bash">* * * * * /usr/local/bin/execute/this/script.sh
</code></pre>
</li>
<li><p>Fazer backup no dia 10 de junho às 08:30:</p>
<pre><code class="language-bash">30 08 10 06 * /home/sysadmin/full-backup
</code></pre>
</li>
<li><p>Backup todo domingo às 5h da manhã:</p>
<pre><code class="language-bash">0 5 * * 0 tar -zcf /var/backups/home.tgz /home/
</code></pre>
</li>
</ul>
<h3>Limitações:</h3>
<p>Tarefas agendadas com <code>cron</code> <strong>não são executadas</strong> se o computador estiver <strong>desligado ou suspenso</strong> no horário programado. O comando é simplesmente ignorado.<br>Use <code>cron</code> para tarefas <strong>com data/hora exatas</strong>.</p>
<hr>
<h1>anacron</h1>
<p>O <code>anacron</code> é uma alternativa ao <code>cron</code> voltada para sistemas que não ficam ligados o tempo todo, como notebooks e desktops. Ele garante a execução de tarefas periódicas (diárias, semanais, mensais) <strong>assim que possível</strong> após o sistema ser ligado, caso tenham sido perdidas. Use <code>anacron</code> para tarefas <strong>periódicas tolerantes a atrasos</strong>.</p>
<h3>Verificação da instalação:</h3>
<pre><code class="language-bash">anacron -V
</code></pre>
<h3>Instalação (caso necessário):</h3>
<pre><code class="language-bash">sudo apt update
sudo apt install anacron
</code></pre>
<h2>Arquivo de configuração:</h2>
<pre><code>/etc/anacrontab
</code></pre>
<p>Acessado com:</p>
<pre><code>sudo nano /etc/anacrontab
</code></pre>
<p>Formato de cada linha:</p>
<pre><code>PERIOD  DELAY  IDENT  COMMAND
</code></pre>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Descrição</th>
</tr>
</thead>
<tbody><tr>
<td>PERIOD</td>
<td>Intervalo em dias (1 = diário, 7 = semanal)</td>
</tr>
<tr>
<td>DELAY</td>
<td>Minutos a esperar após o boot</td>
</tr>
<tr>
<td>IDENT</td>
<td>Nome identificador da tarefa</td>
</tr>
<tr>
<td>COMMAND</td>
<td>Comando ou script a ser executado</td>
</tr>
</tbody></table>
<h3>Exemplo:</h3>
<pre><code class="language-bash">1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh
</code></pre>
<p>Executa o script uma vez por dia, 3 minutos após o sistema ser ligado.</p>
<blockquote>
<p><strong>Nota:</strong> Não é necessário usar <code>run-parts</code> nem <code>cron.daily</code> para tarefas personalizadas. Basta apontar diretamente para o script desejado. O <code>run-parts</code> só deve ser usado quando se deseja executar todos os scripts de um diretório.</p>
</blockquote>
<h3>Ativação do serviço:</h3>
<pre><code class="language-bash">sudo systemctl enable --now anacron
</code></pre>
<h3>Verificação de status:</h3>
<pre><code class="language-bash">systemctl status anacron
</code></pre>
<h3>Logs de execução:</h3>
<pre><code class="language-bash">grep anacron /var/log/syslog
</code></pre>
<h2><code>/etc/anacrontab</code>: Arquivo de Configuração do <code>anacron</code></h2>
<p>O arquivo <code>/etc/anacrontab</code> define tarefas periódicas a serem executadas pelo <code>anacron</code>, garantindo que comandos sejam executados <strong>mesmo que o computador esteja desligado no horário originalmente programado</strong>.</p>
<h3>Cabeçalho Padrão</h3>
<pre><code class="language-bash">SHELL=/bin/sh
HOME=/root
LOGNAME=root
</code></pre>
<ul>
<li><p><code>SHELL</code>: Shell padrão utilizado para executar os comandos.</p>
</li>
<li><p><code>HOME</code>: Diretório home usado durante a execução.</p>
</li>
<li><p><code>LOGNAME</code>: Usuário associado à execução das tarefas.</p>
</li>
</ul>
<h3>Entradas Padrão do Sistema</h3>
<pre><code class="language-bash">1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
</code></pre>
<table>
<thead>
<tr>
<th>Campo</th>
<th>Significado</th>
</tr>
</thead>
<tbody><tr>
<td><code>1</code></td>
<td>Executa a tarefa <strong>diariamente</strong> (a cada 1 dia)</td>
</tr>
<tr>
<td><code>5</code></td>
<td>Espera <strong>5 minutos após o boot</strong></td>
</tr>
<tr>
<td><code>cron.daily</code></td>
<td>Identificador da tarefa (usado nos logs)</td>
</tr>
<tr>
<td><code>run-parts</code></td>
<td>Executa todos os scripts dentro do diretório</td>
</tr>
</tbody></table>
<h4>Diretórios utilizados:</h4>
<ul>
<li><p><code>/etc/cron.daily</code>: scripts executados uma vez por dia</p>
</li>
<li><p><code>/etc/cron.weekly</code>: scripts semanais</p>
</li>
<li><p><code>/etc/cron.monthly</code>: scripts mensais</p>
</li>
</ul>
<blockquote>
<p>O comando <code>run-parts</code> executa automaticamente todos os scripts executáveis localizados nesses diretórios.</p>
</blockquote>
<h4>Personalização</h4>
<p>Para adicionar tarefas personalizadas ao <code>anacron</code>, basta adicionar novas linhas com o formato:</p>
<pre><code>PERIOD  DELAY  IDENT  COMMAND
</code></pre>
<p>Exemplo:</p>
<pre><code class="language-bash">1 3 limpeza-temporarios /home/usuario/scripts/limpar_tmp.sh
</code></pre>
<p>Executa o script <code>limpar_tmp.sh</code> diariamente, com 3 minutos de atraso após o boot.</p>
<blockquote>
<p><strong>Importante:</strong> Não é necessário — nem recomendado — usar <code>run-parts</code> quando a intenção é executar um script individual. O <code>run-parts</code> espera um <strong>diretório</strong> e ignora arquivos individuais. Usar <code>run-parts</code> com um script individual causará falha na execução.</p>
</blockquote>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/8b43856f41b0a9360c7d97ff343d1b9e5e430ace099550fc0d9a324f23520632.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[Use a Rede Tor Para Além do Tor Browser]]></title>
      <description><![CDATA[Você pode configurar outros navegadores, além do Tor Browser, para utilizarem a rede Tor por meio de um proxy.]]></description>
             <itunes:subtitle><![CDATA[Você pode configurar outros navegadores, além do Tor Browser, para utilizarem a rede Tor por meio de um proxy.]]></itunes:subtitle>
      <pubDate>Tue, 21 Jan 2025 20:58:34 GMT</pubDate>
      <link>https://anima.npub.pro/post/1737492374041/</link>
      <comments>https://anima.npub.pro/post/1737492374041/</comments>
      <guid isPermaLink="false">naddr1qqxnzdenxu6rjv3nxu6rqdp3qgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28zxln8g</guid>
      <category>Linux</category>
      
        <media:content url="https://image.nostr.build/2b1049212ea669e4ddfd985defa2345024234c4987f6ed8c865a19b946462da2.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/2b1049212ea669e4ddfd985defa2345024234c4987f6ed8c865a19b946462da2.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzdenxu6rjv3nxu6rqdp3qgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28zxln8g</noteId>
      <npub>npub1d0jucp5jqt799kjuqxzs4cj377tew43dpcr60fzyvcltc5jemtcqryyvcy</npub>
      <dc:creator><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></dc:creator>
      <content:encoded><![CDATA[<p>A seguir, veja como instalar e configurar o <strong>Privoxy</strong> no <strong>Pop!_OS</strong>.</p>
<hr>
<h3><strong>1. Instalar o Tor e o Privoxy</strong></h3>
<p>Abra o terminal e execute:</p>
<pre><code class="language-bash">sudo apt update
sudo apt install tor privoxy
</code></pre>
<p><strong>Explicação:</strong></p>
<ul>
<li><strong>Tor:</strong> Roteia o tráfego pela rede Tor.</li>
<li><strong>Privoxy:</strong> Proxy avançado que intermedia a conexão entre aplicativos e o Tor.</li>
</ul>
<hr>
<h3><strong>2. Configurar o Privoxy</strong></h3>
<p>Abra o arquivo de configuração do Privoxy:</p>
<pre><code class="language-bash">sudo nano /etc/privoxy/config
</code></pre>
<p>Navegue até a última linha (atalho: <strong><code>Ctrl</code></strong> + <strong><code>/</code></strong> depois <strong><code>Ctrl</code></strong> + <strong><code>V</code></strong> para navegar diretamente até a última linha) e insira:</p>
<pre><code class="language-bash">forward-socks5 / 127.0.0.1:9050 .
</code></pre>
<p>Isso faz com que o <strong>Privoxy</strong> envie todo o tráfego para o <strong>Tor</strong> através da porta <strong>9050</strong>.</p>
<p>Salve (<strong><code>CTRL</code></strong> + <strong><code>O</code></strong> e <strong><code>Enter</code></strong>) e feche (<strong><code>CTRL</code></strong> + <strong><code>X</code></strong>) o arquivo.</p>
<hr>
<h3><strong>3. Iniciar o Tor e o Privoxy</strong></h3>
<p>Agora, inicie e habilite os serviços:</p>
<pre><code class="language-bash">sudo systemctl start tor
sudo systemctl start privoxy
sudo systemctl enable tor
sudo systemctl enable privoxy
</code></pre>
<p><strong>Explicação:</strong></p>
<ul>
<li><strong>start:</strong> Inicia os serviços.</li>
<li><strong>enable:</strong> Faz com que iniciem automaticamente ao ligar o PC.</li>
</ul>
<hr>
<h3><strong>4. Configurar o Navegador Firefox</strong></h3>
<p>Para usar a rede <strong>Tor</strong> com o Firefox:</p>
<ol>
<li>Abra o Firefox.</li>
<li>Acesse <strong>Configurações</strong> → <strong>Configurar conexão</strong>.</li>
<li>Selecione <strong>Configuração manual de proxy</strong>.</li>
<li>Configure assim:<ul>
<li><strong>Proxy HTTP:</strong> <code>127.0.0.1</code></li>
<li><strong>Porta:</strong> <code>8118</code> (porta padrão do <strong>Privoxy</strong>)</li>
<li><strong>Domínio SOCKS (v5):</strong> <code>127.0.0.1</code></li>
<li><strong>Porta:</strong> <code>9050</code></li>
</ul>
</li>
<li>Marque a opção <strong>"Usar este proxy também em HTTPS"</strong>.</li>
<li>Clique em <strong>OK</strong>.</li>
</ol>
<hr>
<h3><strong>5. Verificar a Conexão com o Tor</strong></h3>
<p>Abra o navegador e acesse:</p>
<pre><code class="language-text">https://check.torproject.org/
</code></pre>
<p>Se aparecer a mensagem <strong>"Congratulations. This browser is configured to use Tor."</strong>, a configuração está correta.</p>
<hr>
<h3><strong>Dicas Extras</strong></h3>
<ul>
<li><strong>Privoxy</strong> pode ser ajustado para bloquear anúncios e rastreadores.</li>
<li>Outros aplicativos também podem ser configurados para usar o <strong>Privoxy</strong>.</li>
</ul>
]]></content:encoded>
      <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
      <itunes:summary><![CDATA[<p>A seguir, veja como instalar e configurar o <strong>Privoxy</strong> no <strong>Pop!_OS</strong>.</p>
<hr>
<h3><strong>1. Instalar o Tor e o Privoxy</strong></h3>
<p>Abra o terminal e execute:</p>
<pre><code class="language-bash">sudo apt update
sudo apt install tor privoxy
</code></pre>
<p><strong>Explicação:</strong></p>
<ul>
<li><strong>Tor:</strong> Roteia o tráfego pela rede Tor.</li>
<li><strong>Privoxy:</strong> Proxy avançado que intermedia a conexão entre aplicativos e o Tor.</li>
</ul>
<hr>
<h3><strong>2. Configurar o Privoxy</strong></h3>
<p>Abra o arquivo de configuração do Privoxy:</p>
<pre><code class="language-bash">sudo nano /etc/privoxy/config
</code></pre>
<p>Navegue até a última linha (atalho: <strong><code>Ctrl</code></strong> + <strong><code>/</code></strong> depois <strong><code>Ctrl</code></strong> + <strong><code>V</code></strong> para navegar diretamente até a última linha) e insira:</p>
<pre><code class="language-bash">forward-socks5 / 127.0.0.1:9050 .
</code></pre>
<p>Isso faz com que o <strong>Privoxy</strong> envie todo o tráfego para o <strong>Tor</strong> através da porta <strong>9050</strong>.</p>
<p>Salve (<strong><code>CTRL</code></strong> + <strong><code>O</code></strong> e <strong><code>Enter</code></strong>) e feche (<strong><code>CTRL</code></strong> + <strong><code>X</code></strong>) o arquivo.</p>
<hr>
<h3><strong>3. Iniciar o Tor e o Privoxy</strong></h3>
<p>Agora, inicie e habilite os serviços:</p>
<pre><code class="language-bash">sudo systemctl start tor
sudo systemctl start privoxy
sudo systemctl enable tor
sudo systemctl enable privoxy
</code></pre>
<p><strong>Explicação:</strong></p>
<ul>
<li><strong>start:</strong> Inicia os serviços.</li>
<li><strong>enable:</strong> Faz com que iniciem automaticamente ao ligar o PC.</li>
</ul>
<hr>
<h3><strong>4. Configurar o Navegador Firefox</strong></h3>
<p>Para usar a rede <strong>Tor</strong> com o Firefox:</p>
<ol>
<li>Abra o Firefox.</li>
<li>Acesse <strong>Configurações</strong> → <strong>Configurar conexão</strong>.</li>
<li>Selecione <strong>Configuração manual de proxy</strong>.</li>
<li>Configure assim:<ul>
<li><strong>Proxy HTTP:</strong> <code>127.0.0.1</code></li>
<li><strong>Porta:</strong> <code>8118</code> (porta padrão do <strong>Privoxy</strong>)</li>
<li><strong>Domínio SOCKS (v5):</strong> <code>127.0.0.1</code></li>
<li><strong>Porta:</strong> <code>9050</code></li>
</ul>
</li>
<li>Marque a opção <strong>"Usar este proxy também em HTTPS"</strong>.</li>
<li>Clique em <strong>OK</strong>.</li>
</ol>
<hr>
<h3><strong>5. Verificar a Conexão com o Tor</strong></h3>
<p>Abra o navegador e acesse:</p>
<pre><code class="language-text">https://check.torproject.org/
</code></pre>
<p>Se aparecer a mensagem <strong>"Congratulations. This browser is configured to use Tor."</strong>, a configuração está correta.</p>
<hr>
<h3><strong>Dicas Extras</strong></h3>
<ul>
<li><strong>Privoxy</strong> pode ser ajustado para bloquear anúncios e rastreadores.</li>
<li>Outros aplicativos também podem ser configurados para usar o <strong>Privoxy</strong>.</li>
</ul>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/2b1049212ea669e4ddfd985defa2345024234c4987f6ed8c865a19b946462da2.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[Simplificando o Whitepaper do Bitcoin]]></title>
      <description><![CDATA[Um whitepaper é um documento técnico que detalha um conceito ou tecnologia, buscando educar ou propor soluções. O whitepaper do Bitcoin, publicado em 2008 por Satoshi Nakamoto, apresentou a ideia de uma moeda digital descentralizada baseada em blockchain, sendo a base teórica e prática do sistema.]]></description>
             <itunes:subtitle><![CDATA[Um whitepaper é um documento técnico que detalha um conceito ou tecnologia, buscando educar ou propor soluções. O whitepaper do Bitcoin, publicado em 2008 por Satoshi Nakamoto, apresentou a ideia de uma moeda digital descentralizada baseada em blockchain, sendo a base teórica e prática do sistema.]]></itunes:subtitle>
      <pubDate>Sun, 05 Jan 2025 21:15:29 GMT</pubDate>
      <link>https://anima.npub.pro/post/1736110295416/</link>
      <comments>https://anima.npub.pro/post/1736110295416/</comments>
      <guid isPermaLink="false">naddr1qqxnzdenxccnzvpj8y6ngvfkqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28gf77nr</guid>
      <category>Bitcoin</category>
      
        <media:content url="https://image.nostr.build/354ce8767fd62f565f2c084a6e357424c03e002cfbcd867abaf7589ab3fde2a6.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/354ce8767fd62f565f2c084a6e357424c03e002cfbcd867abaf7589ab3fde2a6.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzdenxccnzvpj8y6ngvfkqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28gf77nr</noteId>
      <npub>npub1d0jucp5jqt799kjuqxzs4cj377tew43dpcr60fzyvcltc5jemtcqryyvcy</npub>
      <dc:creator><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></dc:creator>
      <content:encoded><![CDATA[<h2>Bitcoin: Um sistema de dinheiro eletrônico direto entre pessoas.</h2>
<p>Satoshi Nakamoto<br><a href="mailto:satoshin@gmx.com">satoshin@gmx.com</a><br><a href="http://www.bitcoin.org">www.bitcoin.org</a></p>
<hr>
<h3>Resumo</h3>
<p>O Bitcoin é uma forma de dinheiro digital que permite pagamentos diretos entre pessoas, sem a necessidade de um banco ou instituição financeira. Ele resolve um problema chamado <strong>gasto duplo</strong>, que ocorre quando alguém tenta gastar o mesmo dinheiro duas vezes. Para evitar isso, o Bitcoin usa uma rede descentralizada onde todos trabalham juntos para verificar e registrar as transações.</p>
<p>As transações são registradas em um livro público chamado <strong>blockchain</strong>, protegido por uma técnica chamada <strong>Prova de Trabalho</strong>. Essa técnica cria uma cadeia de registros que não pode ser alterada sem refazer todo o trabalho já feito. Essa cadeia é mantida pelos computadores que participam da rede, e a mais longa é considerada a verdadeira.</p>
<p>Enquanto a maior parte do poder computacional da rede for controlada por participantes honestos, o sistema continuará funcionando de forma segura. A rede é flexível, permitindo que qualquer pessoa entre ou saia a qualquer momento, sempre confiando na cadeia mais longa como prova do que aconteceu.</p>
<hr>
<h3>1. Introdução</h3>
<p>Hoje, quase todos os pagamentos feitos pela internet dependem de bancos ou empresas como processadores de pagamento (cartões de crédito, por exemplo) para funcionar. Embora esse sistema seja útil, ele tem problemas importantes porque é baseado em <strong>confiança</strong>.</p>
<p>Primeiro, essas empresas podem reverter pagamentos, o que é útil em caso de erros, mas cria custos e incertezas. Isso faz com que pequenas transações, como pagar centavos por um serviço, se tornem inviáveis. Além disso, os comerciantes são obrigados a desconfiar dos clientes, pedindo informações extras e aceitando fraudes como algo inevitável.</p>
<p>Esses problemas não existem no dinheiro físico, como o papel-moeda, onde o pagamento é final e direto entre as partes. No entanto, não temos como enviar dinheiro físico pela internet sem depender de um intermediário confiável.</p>
<p>O que precisamos é de um <strong>sistema de pagamento eletrônico baseado em provas matemáticas</strong>, não em confiança. Esse sistema permitiria que qualquer pessoa enviasse dinheiro diretamente para outra, sem depender de bancos ou processadores de pagamento. Além disso, as transações seriam irreversíveis, protegendo vendedores contra fraudes, mas mantendo a possibilidade de soluções para disputas legítimas.</p>
<p>Neste documento, apresentamos o <strong>Bitcoin</strong>, que resolve o problema do gasto duplo usando uma rede descentralizada. Essa rede cria um registro público e protegido por cálculos matemáticos, que garante a ordem das transações. Enquanto a maior parte da rede for controlada por pessoas honestas, o sistema será seguro contra ataques.</p>
<hr>
<h3>2. Transações</h3>
<p>Para entender como funciona o Bitcoin, é importante saber como as transações são realizadas. Imagine que você quer transferir uma "moeda digital" para outra pessoa. No sistema do Bitcoin, essa "moeda" é representada por uma sequência de registros que mostram quem é o atual dono. Para transferi-la, você adiciona um novo registro comprovando que agora ela pertence ao próximo dono. Esse registro é protegido por um tipo especial de assinatura digital.</p>
<h4>O que é uma assinatura digital?</h4>
<p>Uma assinatura digital é como uma senha secreta, mas muito mais segura. No Bitcoin, cada usuário tem duas chaves: uma "chave privada", que é secreta e serve para criar a assinatura, e uma "chave pública", que pode ser compartilhada com todos e é usada para verificar se a assinatura é válida. Quando você transfere uma moeda, usa sua chave privada para assinar a transação, provando que você é o dono. A próxima pessoa pode usar sua chave pública para confirmar isso.</p>
<h4>Como funciona na prática?</h4>
<p>Cada "moeda" no Bitcoin é, na verdade, uma cadeia de assinaturas digitais. Vamos imaginar o seguinte cenário:</p>
<ol>
<li>A moeda está com o Dono 0 (você). Para transferi-la ao Dono 1, você assina digitalmente a transação com sua chave privada. Essa assinatura inclui o código da transação anterior (chamado de "hash") e a chave pública do Dono 1.</li>
<li>Quando o Dono 1 quiser transferir a moeda ao Dono 2, ele assinará a transação seguinte com sua própria chave privada, incluindo também o hash da transação anterior e a chave pública do Dono 2.</li>
<li>Esse processo continua, formando uma "cadeia" de transações. Qualquer pessoa pode verificar essa cadeia para confirmar quem é o atual dono da moeda.</li>
</ol>
<h4>Resolvendo o problema do gasto duplo</h4>
<p>Um grande desafio com moedas digitais é o "gasto duplo", que é quando uma mesma moeda é usada em mais de uma transação. Para evitar isso, muitos sistemas antigos dependiam de uma entidade central confiável, como uma casa da moeda, que verificava todas as transações. No entanto, isso criava um ponto único de falha e centralizava o controle do dinheiro.</p>
<p>O Bitcoin resolve esse problema de forma inovadora: ele usa uma rede descentralizada onde todos os participantes (os "nós") têm acesso a um registro completo de todas as transações. Cada nó verifica se as transações são válidas e se a moeda não foi gasta duas vezes. Quando a maioria dos nós concorda com a validade de uma transação, ela é registrada permanentemente na blockchain.</p>
<h4>Por que isso é importante?</h4>
<p>Essa solução elimina a necessidade de confiar em uma única entidade para gerenciar o dinheiro, permitindo que qualquer pessoa no mundo use o Bitcoin sem precisar de permissão de terceiros. Além disso, ela garante que o sistema seja seguro e resistente a fraudes.</p>
<hr>
<h3>3. Servidor Timestamp</h3>
<p>Para assegurar que as transações sejam realizadas de forma segura e transparente, o sistema Bitcoin utiliza algo chamado de "servidor de registro de tempo" (timestamp). Esse servidor funciona como um registro público que organiza as transações em uma ordem específica.</p>
<p>Ele faz isso agrupando várias transações em blocos e criando um código único chamado "hash". Esse hash é como uma impressão digital que representa todo o conteúdo do bloco. O hash de cada bloco é amplamente divulgado, como se fosse publicado em um jornal ou em um fórum público.</p>
<p>Esse processo garante que cada bloco de transações tenha um registro de quando foi criado e que ele existia naquele momento. Além disso, cada novo bloco criado contém o hash do bloco anterior, formando uma cadeia contínua de blocos conectados — conhecida como blockchain.</p>
<p>Com isso, se alguém tentar alterar qualquer informação em um bloco anterior, o hash desse bloco mudará e não corresponderá ao hash armazenado no bloco seguinte. Essa característica torna a cadeia muito segura, pois qualquer tentativa de fraude seria imediatamente detectada.</p>
<p>O sistema de timestamps é essencial para provar a ordem cronológica das transações e garantir que cada uma delas seja única e autêntica. Dessa forma, ele reforça a segurança e a confiança na rede Bitcoin.</p>
<hr>
<h3>4. Prova-de-Trabalho</h3>
<p>Para implementar o registro de tempo distribuído no sistema Bitcoin, utilizamos um mecanismo chamado prova-de-trabalho. Esse sistema é semelhante ao Hashcash, desenvolvido por Adam Back, e baseia-se na criação de um código único, o "hash", por meio de um processo computacionalmente exigente.</p>
<p>A prova-de-trabalho envolve encontrar um valor especial que, quando processado junto com as informações do bloco, gere um hash que comece com uma quantidade específica de zeros. Esse valor especial é chamado de "nonce". Encontrar o nonce correto exige um esforço significativo do computador, porque envolve tentativas repetidas até que a condição seja satisfeita.</p>
<p>Esse processo é importante porque torna extremamente difícil alterar qualquer informação registrada em um bloco. Se alguém tentar mudar algo em um bloco, seria necessário refazer o trabalho de computação não apenas para aquele bloco, mas também para todos os blocos que vêm depois dele. Isso garante a segurança e a imutabilidade da blockchain.</p>
<p>A prova-de-trabalho também resolve o problema de decidir qual cadeia de blocos é a válida quando há múltiplas cadeias competindo. A decisão é feita pela cadeia mais longa, pois ela representa o maior esforço computacional já realizado. Isso impede que qualquer indivíduo ou grupo controle a rede, desde que a maioria do poder de processamento seja mantida por participantes honestos.</p>
<p>Para garantir que o sistema permaneça eficiente e equilibrado, a dificuldade da prova-de-trabalho é ajustada automaticamente ao longo do tempo. Se novos blocos estiverem sendo gerados rapidamente, a dificuldade aumenta; se estiverem sendo gerados muito lentamente, a dificuldade diminui. Esse ajuste assegura que novos blocos sejam criados aproximadamente a cada 10 minutos, mantendo o sistema estável e funcional.</p>
<hr>
<h3>5. Rede</h3>
<p>A rede Bitcoin é o coração do sistema e funciona de maneira distribuída, conectando vários participantes (ou nós) para garantir o registro e a validação das transações. Os passos para operar essa rede são:</p>
<ol>
<li><p><strong>Transmissão de Transações</strong>: Quando alguém realiza uma nova transação, ela é enviada para todos os nós da rede. Isso é feito para garantir que todos estejam cientes da operação e possam validá-la.</p>
</li>
<li><p><strong>Coleta de Transações em Blocos</strong>: Cada nó agrupa as novas transações recebidas em um "bloco". Este bloco será preparado para ser adicionado à cadeia de blocos (a blockchain).</p>
</li>
<li><p><strong>Prova-de-Trabalho</strong>: Os nós competem para resolver a prova-de-trabalho do bloco, utilizando poder computacional para encontrar um hash válido. Esse processo é como resolver um quebra-cabeça matemático difícil.</p>
</li>
<li><p><strong>Envio do Bloco Resolvido</strong>: Quando um nó encontra a solução para o bloco (a prova-de-trabalho), ele compartilha esse bloco com todos os outros nós na rede.</p>
</li>
<li><p><strong>Validação do Bloco</strong>: Cada nó verifica o bloco recebido para garantir que todas as transações nele contidas sejam válidas e que nenhuma moeda tenha sido gasta duas vezes. Apenas blocos válidos são aceitos.</p>
</li>
<li><p><strong>Construção do Próximo Bloco</strong>: Os nós que aceitaram o bloco começam a trabalhar na criação do próximo bloco, utilizando o hash do bloco aceito como base (hash anterior). Isso mantém a continuidade da cadeia.</p>
</li>
</ol>
<h4>Resolução de Conflitos e Escolha da Cadeia Mais Longa</h4>
<p>Os nós sempre priorizam a cadeia mais longa, pois ela representa o maior esforço computacional já realizado, garantindo maior segurança. Se dois blocos diferentes forem compartilhados simultaneamente, os nós trabalharão no primeiro bloco recebido, mas guardarão o outro como uma alternativa. Caso o segundo bloco eventualmente forme uma cadeia mais longa (ou seja, tenha mais blocos subsequentes), os nós mudarão para essa nova cadeia.</p>
<h4>Tolerância a Falhas</h4>
<p>A rede é robusta e pode lidar com mensagens que não chegam a todos os nós. Uma transação não precisa alcançar todos os nós de imediato; basta que chegue a um número suficiente deles para ser incluída em um bloco. Da mesma forma, se um nó não receber um bloco em tempo hábil, ele pode solicitá-lo ao perceber que está faltando quando o próximo bloco é recebido.</p>
<p>Esse mecanismo descentralizado permite que a rede Bitcoin funcione de maneira segura, confiável e resiliente, sem depender de uma autoridade central.</p>
<hr>
<h3>6. Incentivo</h3>
<p>O incentivo é um dos pilares fundamentais que sustenta o funcionamento da rede Bitcoin, garantindo que os participantes (nós) continuem operando de forma honesta e contribuindo com recursos computacionais. Ele é estruturado em duas partes principais: a recompensa por mineração e as taxas de transação.</p>
<h4>Recompensa por Mineração</h4>
<p>Por convenção, o primeiro registro em cada bloco é uma transação especial que cria novas moedas e as atribui ao criador do bloco. Essa recompensa incentiva os mineradores a dedicarem poder computacional para apoiar a rede. Como não há uma autoridade central para emitir moedas, essa é a maneira pela qual novas moedas entram em circulação. Esse processo pode ser comparado ao trabalho de garimpeiros, que utilizam recursos para colocar mais ouro em circulação. No caso do Bitcoin, o "recurso" consiste no tempo de CPU e na energia elétrica consumida para resolver a prova-de-trabalho.</p>
<h4>Taxas de Transação</h4>
<p>Além da recompensa por mineração, os mineradores também podem ser incentivados pelas taxas de transação. Se uma transação utiliza menos valor de saída do que o valor de entrada, a diferença é tratada como uma taxa, que é adicionada à recompensa do bloco contendo essa transação. Com o passar do tempo e à medida que o número de moedas em circulação atinge o limite predeterminado, essas taxas de transação se tornam a principal fonte de incentivo, substituindo gradualmente a emissão de novas moedas. Isso permite que o sistema opere sem inflação, uma vez que o número total de moedas permanece fixo.</p>
<h4>Incentivo à Honestidade</h4>
<p>O design do incentivo também busca garantir que os participantes da rede mantenham um comportamento honesto. Para um atacante que consiga reunir mais poder computacional do que o restante da rede, ele enfrentaria duas escolhas:</p>
<ol>
<li>Usar esse poder para fraudar o sistema, como reverter transações e roubar pagamentos.</li>
<li>Seguir as regras do sistema, criando novos blocos e recebendo recompensas legítimas.</li>
</ol>
<p>A lógica econômica favorece a segunda opção, pois um comportamento desonesto prejudicaria a confiança no sistema, diminuindo o valor de todas as moedas, incluindo aquelas que o próprio atacante possui. Jogar dentro das regras não apenas maximiza o retorno financeiro, mas também preserva a validade e a integridade do sistema.</p>
<p>Esse mecanismo garante que os incentivos econômicos estejam alinhados com o objetivo de manter a rede segura, descentralizada e funcional ao longo do tempo.</p>
<hr>
<h3>7. Recuperação do Espaço em Disco</h3>
<p>Depois que uma moeda passa a estar protegida por muitos blocos na cadeia, as informações sobre as transações antigas que a geraram podem ser descartadas para economizar espaço em disco. Para que isso seja possível sem comprometer a segurança, as transações são organizadas em uma estrutura chamada "árvore de Merkle". Essa árvore funciona como um resumo das transações: em vez de armazenar todas elas, guarda apenas um "hash raiz", que é como uma assinatura compacta que representa todo o grupo de transações.</p>
<p>Os blocos antigos podem, então, ser simplificados, removendo as partes desnecessárias dessa árvore. Apenas a raiz do hash precisa ser mantida no cabeçalho do bloco, garantindo que a integridade dos dados seja preservada, mesmo que detalhes específicos sejam descartados.</p>
<p>Para exemplificar: imagine que você tenha vários recibos de compra. Em vez de guardar todos os recibos, você cria um documento e lista apenas o valor total de cada um. Mesmo que os recibos originais sejam descartados, ainda é possível verificar a soma com base nos valores armazenados.</p>
<p>Além disso, o espaço ocupado pelos blocos em si é muito pequeno. Cada bloco sem transações ocupa apenas cerca de 80 bytes. Isso significa que, mesmo com blocos sendo gerados a cada 10 minutos, o crescimento anual em espaço necessário é insignificante: apenas 4,2 MB por ano. Com a capacidade de armazenamento dos computadores crescendo a cada ano, esse espaço continuará sendo trivial, garantindo que a rede possa operar de forma eficiente sem problemas de armazenamento, mesmo a longo prazo.</p>
<hr>
<h3>8. Verificação de Pagamento Simplificada</h3>
<p>É possível confirmar pagamentos sem a necessidade de operar um nó completo da rede. Para isso, o usuário precisa apenas de uma cópia dos cabeçalhos dos blocos da cadeia mais longa (ou seja, a cadeia com maior esforço de trabalho acumulado). Ele pode verificar a validade de uma transação ao consultar os nós da rede até obter a confirmação de que tem a cadeia mais longa. Para isso, utiliza-se o ramo Merkle, que conecta a transação ao bloco em que ela foi registrada.</p>
<p>Entretanto, o método simplificado possui limitações: ele não pode confirmar uma transação isoladamente, mas sim assegurar que ela ocupa um lugar específico na cadeia mais longa. Dessa forma, se um nó da rede aprova a transação, os blocos subsequentes reforçam essa aceitação.</p>
<p>A verificação simplificada é confiável enquanto a maioria dos nós da rede for honesta. Contudo, ela se torna vulnerável caso a rede seja dominada por um invasor. Nesse cenário, um atacante poderia fabricar transações fraudulentas que enganariam o usuário temporariamente até que o invasor obtivesse controle completo da rede.</p>
<p>Uma estratégia para mitigar esse risco é configurar alertas nos softwares de nós completos. Esses alertas identificam blocos inválidos, sugerindo ao usuário baixar o bloco completo para confirmar qualquer inconsistência. Para maior segurança, empresas que realizam pagamentos frequentes podem preferir operar seus próprios nós, reduzindo riscos e permitindo uma verificação mais direta e confiável.</p>
<hr>
<h3>9. Combinando e Dividindo Valor</h3>
<p>No sistema Bitcoin, cada unidade de valor é tratada como uma "moeda" individual, mas gerenciar cada centavo como uma transação separada seria impraticável. Para resolver isso, o Bitcoin permite que valores sejam combinados ou divididos em transações, facilitando pagamentos de qualquer valor.</p>
<h4>Entradas e Saídas</h4>
<p>Cada transação no Bitcoin é composta por:</p>
<ul>
<li><strong>Entradas</strong>: Representam os valores recebidos em transações anteriores.</li>
<li><strong>Saídas</strong>: Correspondem aos valores enviados, divididos entre os destinatários e, eventualmente, o troco para o remetente.</li>
</ul>
<p>Normalmente, uma transação contém:</p>
<ul>
<li>Uma única entrada com valor suficiente para cobrir o pagamento.</li>
<li>Ou várias entradas combinadas para atingir o valor necessário.</li>
</ul>
<p>O valor total das saídas nunca excede o das entradas, e a diferença (se houver) pode ser retornada ao remetente como <strong>troco</strong>.</p>
<h4>Exemplo Prático</h4>
<p>Imagine que você tem duas entradas:</p>
<ol>
<li>0,03 BTC</li>
<li>0,07 BTC</li>
</ol>
<p>Se deseja enviar 0,08 BTC para alguém, a transação terá:</p>
<ul>
<li><strong>Entrada</strong>: As duas entradas combinadas (0,03 + 0,07 BTC = 0,10 BTC).</li>
<li><strong>Saídas</strong>: Uma para o destinatário (0,08 BTC) e outra como troco para você (0,02 BTC).</li>
</ul>
<p>Essa flexibilidade permite que o sistema funcione sem precisar manipular cada unidade mínima individualmente.</p>
<h4>Difusão e Simplificação</h4>
<p>A difusão de transações, onde uma depende de várias anteriores e assim por diante, não representa um problema. Não é necessário armazenar ou verificar o histórico completo de uma transação para utilizá-la, já que o registro na blockchain garante sua integridade.</p>
<hr>
<h3>10. Privacidade</h3>
<p>O modelo bancário tradicional oferece um certo nível de privacidade, limitando o acesso às informações financeiras apenas às partes envolvidas e a um terceiro confiável (como bancos ou instituições financeiras). No entanto, o Bitcoin opera de forma diferente, pois todas as transações são publicamente registradas na blockchain. Apesar disso, a privacidade pode ser mantida utilizando <strong>chaves públicas anônimas</strong>, que desvinculam diretamente as transações das identidades das partes envolvidas.</p>
<h4>Fluxo de Informação</h4>
<ul>
<li>No <strong>modelo tradicional</strong>, as transações passam por um terceiro confiável que conhece tanto o remetente quanto o destinatário.</li>
<li>No <strong>Bitcoin</strong>, as transações são anunciadas publicamente, mas sem revelar diretamente as identidades das partes. Isso é comparável a dados divulgados por bolsas de valores, onde informações como o tempo e o tamanho das negociações (a "fita") são públicas, mas as identidades das partes não.</li>
</ul>
<h4>Protegendo a Privacidade</h4>
<p>Para aumentar a privacidade no Bitcoin, são adotadas as seguintes práticas:</p>
<ol>
<li><strong>Chaves Públicas Anônimas</strong>: Cada transação utiliza um par de chaves diferentes, dificultando a associação com um proprietário único.</li>
<li><strong>Prevenção de Ligação</strong>: Ao usar chaves novas para cada transação, reduz-se a possibilidade de links evidentes entre múltiplas transações realizadas pelo mesmo usuário.</li>
</ol>
<h4>Riscos de Ligação</h4>
<p>Embora a privacidade seja fortalecida, alguns riscos permanecem:</p>
<ul>
<li>Transações <strong>multi-entrada</strong> podem revelar que todas as entradas pertencem ao mesmo proprietário, caso sejam necessárias para somar o valor total.</li>
<li>O proprietário da chave pode ser identificado indiretamente por transações anteriores que estejam conectadas.</li>
</ul>
<hr>
<h3>11. Cálculos</h3>
<p>Imagine que temos um sistema onde as pessoas (ou computadores) competem para adicionar informações novas (blocos) a um grande registro público (a cadeia de blocos ou blockchain). Este registro é como um livro contábil compartilhado, onde todos podem verificar o que está escrito.</p>
<p>Agora, vamos pensar em um cenário: um atacante quer enganar o sistema. Ele quer mudar informações já registradas para beneficiar a si mesmo, por exemplo, desfazendo um pagamento que já fez. Para isso, ele precisa criar uma versão alternativa do livro contábil (a cadeia de blocos dele) e convencer todos os outros participantes de que essa versão é a verdadeira.</p>
<p>Mas isso é extremamente difícil.</p>
<h4>Como o Ataque Funciona</h4>
<p>Quando um novo bloco é adicionado à cadeia, ele depende de cálculos complexos que levam tempo e esforço. Esses cálculos são como um grande quebra-cabeça que precisa ser resolvido.</p>
<ul>
<li>Os “bons jogadores” (nós honestos) estão sempre trabalhando juntos para resolver esses quebra-cabeças e adicionar novos blocos à cadeia verdadeira.</li>
<li>O atacante, por outro lado, precisa resolver quebra-cabeças sozinho, tentando “alcançar” a cadeia honesta para que sua versão alternativa pareça válida.</li>
</ul>
<p>Se a cadeia honesta já está vários blocos à frente, o atacante começa em desvantagem, e o sistema está projetado para que a dificuldade de alcançá-los aumente rapidamente.</p>
<h4>A Corrida Entre Cadeias</h4>
<p>Você pode imaginar isso como uma corrida. A cada bloco novo que os jogadores honestos adicionam à cadeia verdadeira, eles se distanciam mais do atacante. Para vencer, o atacante teria que resolver os quebra-cabeças mais rápido que todos os outros jogadores honestos juntos.</p>
<p>Suponha que:</p>
<ul>
<li>A rede honesta tem <strong>80% do poder computacional</strong> (ou seja, resolve 8 de cada 10 quebra-cabeças).</li>
<li>O atacante tem <strong>20% do poder computacional</strong> (ou seja, resolve 2 de cada 10 quebra-cabeças).</li>
</ul>
<p>Cada vez que a rede honesta adiciona um bloco, o atacante tem que "correr atrás" e resolver mais quebra-cabeças para alcançar.</p>
<h4>Por Que o Ataque Fica Cada Vez Mais Improvável?</h4>
<p>Vamos usar uma fórmula simples para mostrar como as chances de sucesso do atacante diminuem conforme ele precisa "alcançar" mais blocos:</p>
<p>P = (q/p)^z </p>
<ul>
<li><strong>q</strong> é o poder computacional do atacante (20%, ou 0,2).</li>
<li><strong>p</strong> é o poder computacional da rede honesta (80%, ou 0,8).</li>
<li><strong>z</strong> é a diferença de blocos entre a cadeia honesta e a cadeia do atacante.</li>
</ul>
<p>Se o atacante está 5 blocos atrás (z = 5):</p>
<p>P = (0,2 / 0,8)^5 = (0,25)^5 = 0,00098, (ou, 0,098%)</p>
<p>Isso significa que o atacante tem menos de 0,1% de chance de sucesso — ou seja, é muito improvável.</p>
<p>Se ele estiver 10 blocos atrás (z = 10):</p>
<p>P = (0,2 / 0,8)^10 = (0,25)^10 = 0,000000095, (ou, 0,0000095%).</p>
<p>Neste caso, as chances de sucesso são praticamente <strong>nulas</strong>.</p>
<h4>Um Exemplo Simples</h4>
<p>Se você jogar uma moeda, a chance de cair “cara” é de 50%. Mas se precisar de 10 caras seguidas, sua chance já é bem menor. Se precisar de 20 caras seguidas, é quase impossível.</p>
<p>No caso do Bitcoin, o atacante precisa de muito mais do que 20 caras seguidas. Ele precisa resolver quebra-cabeças extremamente difíceis e alcançar os jogadores honestos que estão sempre à frente. Isso faz com que o ataque seja inviável na prática.</p>
<h4>Por Que Tudo Isso é Seguro?</h4>
<ul>
<li><strong>A probabilidade de sucesso do atacante diminui exponencialmente.</strong> Isso significa que, quanto mais tempo passa, menor é a chance de ele conseguir enganar o sistema.</li>
<li><strong>A cadeia verdadeira (honesta) está protegida pela força da rede.</strong> Cada novo bloco que os jogadores honestos adicionam à cadeia torna mais difícil para o atacante alcançar.</li>
</ul>
<h4>E Se o Atacante Tentar Continuar?</h4>
<p>O atacante poderia continuar tentando indefinidamente, mas ele estaria gastando muito tempo e energia sem conseguir nada. Enquanto isso, os jogadores honestos estão sempre adicionando novos blocos, tornando o trabalho do atacante ainda mais inútil.</p>
<p>Assim, o sistema garante que a cadeia verdadeira seja extremamente segura e que ataques sejam, na prática, impossíveis de ter sucesso.</p>
<hr>
<h3>12. Conclusão</h3>
<p>Propusemos um sistema de transações eletrônicas que elimina a necessidade de confiança, baseando-se em assinaturas digitais e em uma rede peer-to-peer que utiliza prova de trabalho. Isso resolve o problema do gasto duplo, criando um histórico público de transações imutável, desde que a maioria do poder computacional permaneça sob controle dos participantes honestos.<br>A rede funciona de forma simples e descentralizada, com nós independentes que não precisam de identificação ou coordenação direta. Eles entram e saem livremente, aceitando a cadeia de prova de trabalho como registro do que ocorreu durante sua ausência. As decisões são tomadas por meio do poder de CPU, validando blocos legítimos, estendendo a cadeia e rejeitando os inválidos.<br>Com este mecanismo de consenso, todas as regras e incentivos necessários para o funcionamento seguro e eficiente do sistema são garantidos.</p>
<hr>
<p>Faça o download do whitepaper original em português:<br><np-embed url="https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf"><a href="https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf">https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf</a></np-embed></p>
]]></content:encoded>
      <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
      <itunes:summary><![CDATA[<h2>Bitcoin: Um sistema de dinheiro eletrônico direto entre pessoas.</h2>
<p>Satoshi Nakamoto<br><a href="mailto:satoshin@gmx.com">satoshin@gmx.com</a><br><a href="http://www.bitcoin.org">www.bitcoin.org</a></p>
<hr>
<h3>Resumo</h3>
<p>O Bitcoin é uma forma de dinheiro digital que permite pagamentos diretos entre pessoas, sem a necessidade de um banco ou instituição financeira. Ele resolve um problema chamado <strong>gasto duplo</strong>, que ocorre quando alguém tenta gastar o mesmo dinheiro duas vezes. Para evitar isso, o Bitcoin usa uma rede descentralizada onde todos trabalham juntos para verificar e registrar as transações.</p>
<p>As transações são registradas em um livro público chamado <strong>blockchain</strong>, protegido por uma técnica chamada <strong>Prova de Trabalho</strong>. Essa técnica cria uma cadeia de registros que não pode ser alterada sem refazer todo o trabalho já feito. Essa cadeia é mantida pelos computadores que participam da rede, e a mais longa é considerada a verdadeira.</p>
<p>Enquanto a maior parte do poder computacional da rede for controlada por participantes honestos, o sistema continuará funcionando de forma segura. A rede é flexível, permitindo que qualquer pessoa entre ou saia a qualquer momento, sempre confiando na cadeia mais longa como prova do que aconteceu.</p>
<hr>
<h3>1. Introdução</h3>
<p>Hoje, quase todos os pagamentos feitos pela internet dependem de bancos ou empresas como processadores de pagamento (cartões de crédito, por exemplo) para funcionar. Embora esse sistema seja útil, ele tem problemas importantes porque é baseado em <strong>confiança</strong>.</p>
<p>Primeiro, essas empresas podem reverter pagamentos, o que é útil em caso de erros, mas cria custos e incertezas. Isso faz com que pequenas transações, como pagar centavos por um serviço, se tornem inviáveis. Além disso, os comerciantes são obrigados a desconfiar dos clientes, pedindo informações extras e aceitando fraudes como algo inevitável.</p>
<p>Esses problemas não existem no dinheiro físico, como o papel-moeda, onde o pagamento é final e direto entre as partes. No entanto, não temos como enviar dinheiro físico pela internet sem depender de um intermediário confiável.</p>
<p>O que precisamos é de um <strong>sistema de pagamento eletrônico baseado em provas matemáticas</strong>, não em confiança. Esse sistema permitiria que qualquer pessoa enviasse dinheiro diretamente para outra, sem depender de bancos ou processadores de pagamento. Além disso, as transações seriam irreversíveis, protegendo vendedores contra fraudes, mas mantendo a possibilidade de soluções para disputas legítimas.</p>
<p>Neste documento, apresentamos o <strong>Bitcoin</strong>, que resolve o problema do gasto duplo usando uma rede descentralizada. Essa rede cria um registro público e protegido por cálculos matemáticos, que garante a ordem das transações. Enquanto a maior parte da rede for controlada por pessoas honestas, o sistema será seguro contra ataques.</p>
<hr>
<h3>2. Transações</h3>
<p>Para entender como funciona o Bitcoin, é importante saber como as transações são realizadas. Imagine que você quer transferir uma "moeda digital" para outra pessoa. No sistema do Bitcoin, essa "moeda" é representada por uma sequência de registros que mostram quem é o atual dono. Para transferi-la, você adiciona um novo registro comprovando que agora ela pertence ao próximo dono. Esse registro é protegido por um tipo especial de assinatura digital.</p>
<h4>O que é uma assinatura digital?</h4>
<p>Uma assinatura digital é como uma senha secreta, mas muito mais segura. No Bitcoin, cada usuário tem duas chaves: uma "chave privada", que é secreta e serve para criar a assinatura, e uma "chave pública", que pode ser compartilhada com todos e é usada para verificar se a assinatura é válida. Quando você transfere uma moeda, usa sua chave privada para assinar a transação, provando que você é o dono. A próxima pessoa pode usar sua chave pública para confirmar isso.</p>
<h4>Como funciona na prática?</h4>
<p>Cada "moeda" no Bitcoin é, na verdade, uma cadeia de assinaturas digitais. Vamos imaginar o seguinte cenário:</p>
<ol>
<li>A moeda está com o Dono 0 (você). Para transferi-la ao Dono 1, você assina digitalmente a transação com sua chave privada. Essa assinatura inclui o código da transação anterior (chamado de "hash") e a chave pública do Dono 1.</li>
<li>Quando o Dono 1 quiser transferir a moeda ao Dono 2, ele assinará a transação seguinte com sua própria chave privada, incluindo também o hash da transação anterior e a chave pública do Dono 2.</li>
<li>Esse processo continua, formando uma "cadeia" de transações. Qualquer pessoa pode verificar essa cadeia para confirmar quem é o atual dono da moeda.</li>
</ol>
<h4>Resolvendo o problema do gasto duplo</h4>
<p>Um grande desafio com moedas digitais é o "gasto duplo", que é quando uma mesma moeda é usada em mais de uma transação. Para evitar isso, muitos sistemas antigos dependiam de uma entidade central confiável, como uma casa da moeda, que verificava todas as transações. No entanto, isso criava um ponto único de falha e centralizava o controle do dinheiro.</p>
<p>O Bitcoin resolve esse problema de forma inovadora: ele usa uma rede descentralizada onde todos os participantes (os "nós") têm acesso a um registro completo de todas as transações. Cada nó verifica se as transações são válidas e se a moeda não foi gasta duas vezes. Quando a maioria dos nós concorda com a validade de uma transação, ela é registrada permanentemente na blockchain.</p>
<h4>Por que isso é importante?</h4>
<p>Essa solução elimina a necessidade de confiar em uma única entidade para gerenciar o dinheiro, permitindo que qualquer pessoa no mundo use o Bitcoin sem precisar de permissão de terceiros. Além disso, ela garante que o sistema seja seguro e resistente a fraudes.</p>
<hr>
<h3>3. Servidor Timestamp</h3>
<p>Para assegurar que as transações sejam realizadas de forma segura e transparente, o sistema Bitcoin utiliza algo chamado de "servidor de registro de tempo" (timestamp). Esse servidor funciona como um registro público que organiza as transações em uma ordem específica.</p>
<p>Ele faz isso agrupando várias transações em blocos e criando um código único chamado "hash". Esse hash é como uma impressão digital que representa todo o conteúdo do bloco. O hash de cada bloco é amplamente divulgado, como se fosse publicado em um jornal ou em um fórum público.</p>
<p>Esse processo garante que cada bloco de transações tenha um registro de quando foi criado e que ele existia naquele momento. Além disso, cada novo bloco criado contém o hash do bloco anterior, formando uma cadeia contínua de blocos conectados — conhecida como blockchain.</p>
<p>Com isso, se alguém tentar alterar qualquer informação em um bloco anterior, o hash desse bloco mudará e não corresponderá ao hash armazenado no bloco seguinte. Essa característica torna a cadeia muito segura, pois qualquer tentativa de fraude seria imediatamente detectada.</p>
<p>O sistema de timestamps é essencial para provar a ordem cronológica das transações e garantir que cada uma delas seja única e autêntica. Dessa forma, ele reforça a segurança e a confiança na rede Bitcoin.</p>
<hr>
<h3>4. Prova-de-Trabalho</h3>
<p>Para implementar o registro de tempo distribuído no sistema Bitcoin, utilizamos um mecanismo chamado prova-de-trabalho. Esse sistema é semelhante ao Hashcash, desenvolvido por Adam Back, e baseia-se na criação de um código único, o "hash", por meio de um processo computacionalmente exigente.</p>
<p>A prova-de-trabalho envolve encontrar um valor especial que, quando processado junto com as informações do bloco, gere um hash que comece com uma quantidade específica de zeros. Esse valor especial é chamado de "nonce". Encontrar o nonce correto exige um esforço significativo do computador, porque envolve tentativas repetidas até que a condição seja satisfeita.</p>
<p>Esse processo é importante porque torna extremamente difícil alterar qualquer informação registrada em um bloco. Se alguém tentar mudar algo em um bloco, seria necessário refazer o trabalho de computação não apenas para aquele bloco, mas também para todos os blocos que vêm depois dele. Isso garante a segurança e a imutabilidade da blockchain.</p>
<p>A prova-de-trabalho também resolve o problema de decidir qual cadeia de blocos é a válida quando há múltiplas cadeias competindo. A decisão é feita pela cadeia mais longa, pois ela representa o maior esforço computacional já realizado. Isso impede que qualquer indivíduo ou grupo controle a rede, desde que a maioria do poder de processamento seja mantida por participantes honestos.</p>
<p>Para garantir que o sistema permaneça eficiente e equilibrado, a dificuldade da prova-de-trabalho é ajustada automaticamente ao longo do tempo. Se novos blocos estiverem sendo gerados rapidamente, a dificuldade aumenta; se estiverem sendo gerados muito lentamente, a dificuldade diminui. Esse ajuste assegura que novos blocos sejam criados aproximadamente a cada 10 minutos, mantendo o sistema estável e funcional.</p>
<hr>
<h3>5. Rede</h3>
<p>A rede Bitcoin é o coração do sistema e funciona de maneira distribuída, conectando vários participantes (ou nós) para garantir o registro e a validação das transações. Os passos para operar essa rede são:</p>
<ol>
<li><p><strong>Transmissão de Transações</strong>: Quando alguém realiza uma nova transação, ela é enviada para todos os nós da rede. Isso é feito para garantir que todos estejam cientes da operação e possam validá-la.</p>
</li>
<li><p><strong>Coleta de Transações em Blocos</strong>: Cada nó agrupa as novas transações recebidas em um "bloco". Este bloco será preparado para ser adicionado à cadeia de blocos (a blockchain).</p>
</li>
<li><p><strong>Prova-de-Trabalho</strong>: Os nós competem para resolver a prova-de-trabalho do bloco, utilizando poder computacional para encontrar um hash válido. Esse processo é como resolver um quebra-cabeça matemático difícil.</p>
</li>
<li><p><strong>Envio do Bloco Resolvido</strong>: Quando um nó encontra a solução para o bloco (a prova-de-trabalho), ele compartilha esse bloco com todos os outros nós na rede.</p>
</li>
<li><p><strong>Validação do Bloco</strong>: Cada nó verifica o bloco recebido para garantir que todas as transações nele contidas sejam válidas e que nenhuma moeda tenha sido gasta duas vezes. Apenas blocos válidos são aceitos.</p>
</li>
<li><p><strong>Construção do Próximo Bloco</strong>: Os nós que aceitaram o bloco começam a trabalhar na criação do próximo bloco, utilizando o hash do bloco aceito como base (hash anterior). Isso mantém a continuidade da cadeia.</p>
</li>
</ol>
<h4>Resolução de Conflitos e Escolha da Cadeia Mais Longa</h4>
<p>Os nós sempre priorizam a cadeia mais longa, pois ela representa o maior esforço computacional já realizado, garantindo maior segurança. Se dois blocos diferentes forem compartilhados simultaneamente, os nós trabalharão no primeiro bloco recebido, mas guardarão o outro como uma alternativa. Caso o segundo bloco eventualmente forme uma cadeia mais longa (ou seja, tenha mais blocos subsequentes), os nós mudarão para essa nova cadeia.</p>
<h4>Tolerância a Falhas</h4>
<p>A rede é robusta e pode lidar com mensagens que não chegam a todos os nós. Uma transação não precisa alcançar todos os nós de imediato; basta que chegue a um número suficiente deles para ser incluída em um bloco. Da mesma forma, se um nó não receber um bloco em tempo hábil, ele pode solicitá-lo ao perceber que está faltando quando o próximo bloco é recebido.</p>
<p>Esse mecanismo descentralizado permite que a rede Bitcoin funcione de maneira segura, confiável e resiliente, sem depender de uma autoridade central.</p>
<hr>
<h3>6. Incentivo</h3>
<p>O incentivo é um dos pilares fundamentais que sustenta o funcionamento da rede Bitcoin, garantindo que os participantes (nós) continuem operando de forma honesta e contribuindo com recursos computacionais. Ele é estruturado em duas partes principais: a recompensa por mineração e as taxas de transação.</p>
<h4>Recompensa por Mineração</h4>
<p>Por convenção, o primeiro registro em cada bloco é uma transação especial que cria novas moedas e as atribui ao criador do bloco. Essa recompensa incentiva os mineradores a dedicarem poder computacional para apoiar a rede. Como não há uma autoridade central para emitir moedas, essa é a maneira pela qual novas moedas entram em circulação. Esse processo pode ser comparado ao trabalho de garimpeiros, que utilizam recursos para colocar mais ouro em circulação. No caso do Bitcoin, o "recurso" consiste no tempo de CPU e na energia elétrica consumida para resolver a prova-de-trabalho.</p>
<h4>Taxas de Transação</h4>
<p>Além da recompensa por mineração, os mineradores também podem ser incentivados pelas taxas de transação. Se uma transação utiliza menos valor de saída do que o valor de entrada, a diferença é tratada como uma taxa, que é adicionada à recompensa do bloco contendo essa transação. Com o passar do tempo e à medida que o número de moedas em circulação atinge o limite predeterminado, essas taxas de transação se tornam a principal fonte de incentivo, substituindo gradualmente a emissão de novas moedas. Isso permite que o sistema opere sem inflação, uma vez que o número total de moedas permanece fixo.</p>
<h4>Incentivo à Honestidade</h4>
<p>O design do incentivo também busca garantir que os participantes da rede mantenham um comportamento honesto. Para um atacante que consiga reunir mais poder computacional do que o restante da rede, ele enfrentaria duas escolhas:</p>
<ol>
<li>Usar esse poder para fraudar o sistema, como reverter transações e roubar pagamentos.</li>
<li>Seguir as regras do sistema, criando novos blocos e recebendo recompensas legítimas.</li>
</ol>
<p>A lógica econômica favorece a segunda opção, pois um comportamento desonesto prejudicaria a confiança no sistema, diminuindo o valor de todas as moedas, incluindo aquelas que o próprio atacante possui. Jogar dentro das regras não apenas maximiza o retorno financeiro, mas também preserva a validade e a integridade do sistema.</p>
<p>Esse mecanismo garante que os incentivos econômicos estejam alinhados com o objetivo de manter a rede segura, descentralizada e funcional ao longo do tempo.</p>
<hr>
<h3>7. Recuperação do Espaço em Disco</h3>
<p>Depois que uma moeda passa a estar protegida por muitos blocos na cadeia, as informações sobre as transações antigas que a geraram podem ser descartadas para economizar espaço em disco. Para que isso seja possível sem comprometer a segurança, as transações são organizadas em uma estrutura chamada "árvore de Merkle". Essa árvore funciona como um resumo das transações: em vez de armazenar todas elas, guarda apenas um "hash raiz", que é como uma assinatura compacta que representa todo o grupo de transações.</p>
<p>Os blocos antigos podem, então, ser simplificados, removendo as partes desnecessárias dessa árvore. Apenas a raiz do hash precisa ser mantida no cabeçalho do bloco, garantindo que a integridade dos dados seja preservada, mesmo que detalhes específicos sejam descartados.</p>
<p>Para exemplificar: imagine que você tenha vários recibos de compra. Em vez de guardar todos os recibos, você cria um documento e lista apenas o valor total de cada um. Mesmo que os recibos originais sejam descartados, ainda é possível verificar a soma com base nos valores armazenados.</p>
<p>Além disso, o espaço ocupado pelos blocos em si é muito pequeno. Cada bloco sem transações ocupa apenas cerca de 80 bytes. Isso significa que, mesmo com blocos sendo gerados a cada 10 minutos, o crescimento anual em espaço necessário é insignificante: apenas 4,2 MB por ano. Com a capacidade de armazenamento dos computadores crescendo a cada ano, esse espaço continuará sendo trivial, garantindo que a rede possa operar de forma eficiente sem problemas de armazenamento, mesmo a longo prazo.</p>
<hr>
<h3>8. Verificação de Pagamento Simplificada</h3>
<p>É possível confirmar pagamentos sem a necessidade de operar um nó completo da rede. Para isso, o usuário precisa apenas de uma cópia dos cabeçalhos dos blocos da cadeia mais longa (ou seja, a cadeia com maior esforço de trabalho acumulado). Ele pode verificar a validade de uma transação ao consultar os nós da rede até obter a confirmação de que tem a cadeia mais longa. Para isso, utiliza-se o ramo Merkle, que conecta a transação ao bloco em que ela foi registrada.</p>
<p>Entretanto, o método simplificado possui limitações: ele não pode confirmar uma transação isoladamente, mas sim assegurar que ela ocupa um lugar específico na cadeia mais longa. Dessa forma, se um nó da rede aprova a transação, os blocos subsequentes reforçam essa aceitação.</p>
<p>A verificação simplificada é confiável enquanto a maioria dos nós da rede for honesta. Contudo, ela se torna vulnerável caso a rede seja dominada por um invasor. Nesse cenário, um atacante poderia fabricar transações fraudulentas que enganariam o usuário temporariamente até que o invasor obtivesse controle completo da rede.</p>
<p>Uma estratégia para mitigar esse risco é configurar alertas nos softwares de nós completos. Esses alertas identificam blocos inválidos, sugerindo ao usuário baixar o bloco completo para confirmar qualquer inconsistência. Para maior segurança, empresas que realizam pagamentos frequentes podem preferir operar seus próprios nós, reduzindo riscos e permitindo uma verificação mais direta e confiável.</p>
<hr>
<h3>9. Combinando e Dividindo Valor</h3>
<p>No sistema Bitcoin, cada unidade de valor é tratada como uma "moeda" individual, mas gerenciar cada centavo como uma transação separada seria impraticável. Para resolver isso, o Bitcoin permite que valores sejam combinados ou divididos em transações, facilitando pagamentos de qualquer valor.</p>
<h4>Entradas e Saídas</h4>
<p>Cada transação no Bitcoin é composta por:</p>
<ul>
<li><strong>Entradas</strong>: Representam os valores recebidos em transações anteriores.</li>
<li><strong>Saídas</strong>: Correspondem aos valores enviados, divididos entre os destinatários e, eventualmente, o troco para o remetente.</li>
</ul>
<p>Normalmente, uma transação contém:</p>
<ul>
<li>Uma única entrada com valor suficiente para cobrir o pagamento.</li>
<li>Ou várias entradas combinadas para atingir o valor necessário.</li>
</ul>
<p>O valor total das saídas nunca excede o das entradas, e a diferença (se houver) pode ser retornada ao remetente como <strong>troco</strong>.</p>
<h4>Exemplo Prático</h4>
<p>Imagine que você tem duas entradas:</p>
<ol>
<li>0,03 BTC</li>
<li>0,07 BTC</li>
</ol>
<p>Se deseja enviar 0,08 BTC para alguém, a transação terá:</p>
<ul>
<li><strong>Entrada</strong>: As duas entradas combinadas (0,03 + 0,07 BTC = 0,10 BTC).</li>
<li><strong>Saídas</strong>: Uma para o destinatário (0,08 BTC) e outra como troco para você (0,02 BTC).</li>
</ul>
<p>Essa flexibilidade permite que o sistema funcione sem precisar manipular cada unidade mínima individualmente.</p>
<h4>Difusão e Simplificação</h4>
<p>A difusão de transações, onde uma depende de várias anteriores e assim por diante, não representa um problema. Não é necessário armazenar ou verificar o histórico completo de uma transação para utilizá-la, já que o registro na blockchain garante sua integridade.</p>
<hr>
<h3>10. Privacidade</h3>
<p>O modelo bancário tradicional oferece um certo nível de privacidade, limitando o acesso às informações financeiras apenas às partes envolvidas e a um terceiro confiável (como bancos ou instituições financeiras). No entanto, o Bitcoin opera de forma diferente, pois todas as transações são publicamente registradas na blockchain. Apesar disso, a privacidade pode ser mantida utilizando <strong>chaves públicas anônimas</strong>, que desvinculam diretamente as transações das identidades das partes envolvidas.</p>
<h4>Fluxo de Informação</h4>
<ul>
<li>No <strong>modelo tradicional</strong>, as transações passam por um terceiro confiável que conhece tanto o remetente quanto o destinatário.</li>
<li>No <strong>Bitcoin</strong>, as transações são anunciadas publicamente, mas sem revelar diretamente as identidades das partes. Isso é comparável a dados divulgados por bolsas de valores, onde informações como o tempo e o tamanho das negociações (a "fita") são públicas, mas as identidades das partes não.</li>
</ul>
<h4>Protegendo a Privacidade</h4>
<p>Para aumentar a privacidade no Bitcoin, são adotadas as seguintes práticas:</p>
<ol>
<li><strong>Chaves Públicas Anônimas</strong>: Cada transação utiliza um par de chaves diferentes, dificultando a associação com um proprietário único.</li>
<li><strong>Prevenção de Ligação</strong>: Ao usar chaves novas para cada transação, reduz-se a possibilidade de links evidentes entre múltiplas transações realizadas pelo mesmo usuário.</li>
</ol>
<h4>Riscos de Ligação</h4>
<p>Embora a privacidade seja fortalecida, alguns riscos permanecem:</p>
<ul>
<li>Transações <strong>multi-entrada</strong> podem revelar que todas as entradas pertencem ao mesmo proprietário, caso sejam necessárias para somar o valor total.</li>
<li>O proprietário da chave pode ser identificado indiretamente por transações anteriores que estejam conectadas.</li>
</ul>
<hr>
<h3>11. Cálculos</h3>
<p>Imagine que temos um sistema onde as pessoas (ou computadores) competem para adicionar informações novas (blocos) a um grande registro público (a cadeia de blocos ou blockchain). Este registro é como um livro contábil compartilhado, onde todos podem verificar o que está escrito.</p>
<p>Agora, vamos pensar em um cenário: um atacante quer enganar o sistema. Ele quer mudar informações já registradas para beneficiar a si mesmo, por exemplo, desfazendo um pagamento que já fez. Para isso, ele precisa criar uma versão alternativa do livro contábil (a cadeia de blocos dele) e convencer todos os outros participantes de que essa versão é a verdadeira.</p>
<p>Mas isso é extremamente difícil.</p>
<h4>Como o Ataque Funciona</h4>
<p>Quando um novo bloco é adicionado à cadeia, ele depende de cálculos complexos que levam tempo e esforço. Esses cálculos são como um grande quebra-cabeça que precisa ser resolvido.</p>
<ul>
<li>Os “bons jogadores” (nós honestos) estão sempre trabalhando juntos para resolver esses quebra-cabeças e adicionar novos blocos à cadeia verdadeira.</li>
<li>O atacante, por outro lado, precisa resolver quebra-cabeças sozinho, tentando “alcançar” a cadeia honesta para que sua versão alternativa pareça válida.</li>
</ul>
<p>Se a cadeia honesta já está vários blocos à frente, o atacante começa em desvantagem, e o sistema está projetado para que a dificuldade de alcançá-los aumente rapidamente.</p>
<h4>A Corrida Entre Cadeias</h4>
<p>Você pode imaginar isso como uma corrida. A cada bloco novo que os jogadores honestos adicionam à cadeia verdadeira, eles se distanciam mais do atacante. Para vencer, o atacante teria que resolver os quebra-cabeças mais rápido que todos os outros jogadores honestos juntos.</p>
<p>Suponha que:</p>
<ul>
<li>A rede honesta tem <strong>80% do poder computacional</strong> (ou seja, resolve 8 de cada 10 quebra-cabeças).</li>
<li>O atacante tem <strong>20% do poder computacional</strong> (ou seja, resolve 2 de cada 10 quebra-cabeças).</li>
</ul>
<p>Cada vez que a rede honesta adiciona um bloco, o atacante tem que "correr atrás" e resolver mais quebra-cabeças para alcançar.</p>
<h4>Por Que o Ataque Fica Cada Vez Mais Improvável?</h4>
<p>Vamos usar uma fórmula simples para mostrar como as chances de sucesso do atacante diminuem conforme ele precisa "alcançar" mais blocos:</p>
<p>P = (q/p)^z </p>
<ul>
<li><strong>q</strong> é o poder computacional do atacante (20%, ou 0,2).</li>
<li><strong>p</strong> é o poder computacional da rede honesta (80%, ou 0,8).</li>
<li><strong>z</strong> é a diferença de blocos entre a cadeia honesta e a cadeia do atacante.</li>
</ul>
<p>Se o atacante está 5 blocos atrás (z = 5):</p>
<p>P = (0,2 / 0,8)^5 = (0,25)^5 = 0,00098, (ou, 0,098%)</p>
<p>Isso significa que o atacante tem menos de 0,1% de chance de sucesso — ou seja, é muito improvável.</p>
<p>Se ele estiver 10 blocos atrás (z = 10):</p>
<p>P = (0,2 / 0,8)^10 = (0,25)^10 = 0,000000095, (ou, 0,0000095%).</p>
<p>Neste caso, as chances de sucesso são praticamente <strong>nulas</strong>.</p>
<h4>Um Exemplo Simples</h4>
<p>Se você jogar uma moeda, a chance de cair “cara” é de 50%. Mas se precisar de 10 caras seguidas, sua chance já é bem menor. Se precisar de 20 caras seguidas, é quase impossível.</p>
<p>No caso do Bitcoin, o atacante precisa de muito mais do que 20 caras seguidas. Ele precisa resolver quebra-cabeças extremamente difíceis e alcançar os jogadores honestos que estão sempre à frente. Isso faz com que o ataque seja inviável na prática.</p>
<h4>Por Que Tudo Isso é Seguro?</h4>
<ul>
<li><strong>A probabilidade de sucesso do atacante diminui exponencialmente.</strong> Isso significa que, quanto mais tempo passa, menor é a chance de ele conseguir enganar o sistema.</li>
<li><strong>A cadeia verdadeira (honesta) está protegida pela força da rede.</strong> Cada novo bloco que os jogadores honestos adicionam à cadeia torna mais difícil para o atacante alcançar.</li>
</ul>
<h4>E Se o Atacante Tentar Continuar?</h4>
<p>O atacante poderia continuar tentando indefinidamente, mas ele estaria gastando muito tempo e energia sem conseguir nada. Enquanto isso, os jogadores honestos estão sempre adicionando novos blocos, tornando o trabalho do atacante ainda mais inútil.</p>
<p>Assim, o sistema garante que a cadeia verdadeira seja extremamente segura e que ataques sejam, na prática, impossíveis de ter sucesso.</p>
<hr>
<h3>12. Conclusão</h3>
<p>Propusemos um sistema de transações eletrônicas que elimina a necessidade de confiança, baseando-se em assinaturas digitais e em uma rede peer-to-peer que utiliza prova de trabalho. Isso resolve o problema do gasto duplo, criando um histórico público de transações imutável, desde que a maioria do poder computacional permaneça sob controle dos participantes honestos.<br>A rede funciona de forma simples e descentralizada, com nós independentes que não precisam de identificação ou coordenação direta. Eles entram e saem livremente, aceitando a cadeia de prova de trabalho como registro do que ocorreu durante sua ausência. As decisões são tomadas por meio do poder de CPU, validando blocos legítimos, estendendo a cadeia e rejeitando os inválidos.<br>Com este mecanismo de consenso, todas as regras e incentivos necessários para o funcionamento seguro e eficiente do sistema são garantidos.</p>
<hr>
<p>Faça o download do whitepaper original em português:<br><np-embed url="https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf"><a href="https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf">https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf</a></np-embed></p>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/354ce8767fd62f565f2c084a6e357424c03e002cfbcd867abaf7589ab3fde2a6.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[Filesystem Hierarchy Standard (FHS)]]></title>
      <description><![CDATA[O FHS é como se fosse o "mapa organizado" do sistema de arquivos no Linux. Ele define onde cada tipo de arquivo ou diretório deve estar dentro do sistema, para que tudo fique padronizado e fácil de encontrar. 
A ideia é que qualquer distribuição Linux siga essas regras (ou algo próximo delas), então, não importa se você usa Ubuntu, Fedora ou outra distro, os arquivos principais estarão sempre mais ou menos nos mesmos lugares. Isso facilita a vida de todo mundo.]]></description>
             <itunes:subtitle><![CDATA[O FHS é como se fosse o "mapa organizado" do sistema de arquivos no Linux. Ele define onde cada tipo de arquivo ou diretório deve estar dentro do sistema, para que tudo fique padronizado e fácil de encontrar. 
A ideia é que qualquer distribuição Linux siga essas regras (ou algo próximo delas), então, não importa se você usa Ubuntu, Fedora ou outra distro, os arquivos principais estarão sempre mais ou menos nos mesmos lugares. Isso facilita a vida de todo mundo.]]></itunes:subtitle>
      <pubDate>Sun, 29 Dec 2024 17:44:45 GMT</pubDate>
      <link>https://anima.npub.pro/post/1735494128340/</link>
      <comments>https://anima.npub.pro/post/1735494128340/</comments>
      <guid isPermaLink="false">naddr1qqxnzdenx56rjdp3xgurxdpsqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa286er69u</guid>
      <category>Linux</category>
      
        <media:content url="https://image.nostr.build/0f751041ec427bdb98eeb1b18573036ecc15c5582bae50e71b046cbdd0ae0ca2.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/0f751041ec427bdb98eeb1b18573036ecc15c5582bae50e71b046cbdd0ae0ca2.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzdenx56rjdp3xgurxdpsqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa286er69u</noteId>
      <npub>npub1d0jucp5jqt799kjuqxzs4cj377tew43dpcr60fzyvcltc5jemtcqryyvcy</npub>
      <dc:creator><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></dc:creator>
      <content:encoded><![CDATA[<p><img src="https://image.nostr.build/0df61cc2f75abe25735557e56d2b1070ab443e76ed15ded83f89f16de379af3f.jpg" alt="Filesystem_Hierarchy_Standard"></p>
<ol>
<li><p><strong><code>/</code> (Root Directory)</strong>  </p>
<ul>
<li>É o diretório raiz de todo o sistema de arquivos. Todos os outros diretórios e arquivos estão localizados dentro dele. Representa o ponto inicial da estrutura hierárquica.</li>
</ul>
</li>
<li><p><strong><code>/bin</code> (Essential User Command Binaries)</strong>  </p>
<ul>
<li>Contém comandos essenciais que são usados pelos usuários e pelo sistema, como <code>ls</code>, <code>cp</code>, <code>mv</code>, etc. Esses comandos podem ser executados tanto pelo usuário comum quanto pelo administrador.</li>
</ul>
</li>
<li><p><strong><code>/boot</code> (Static Files of the Boot Loader)</strong>  </p>
<ul>
<li>Guarda os arquivos necessários para a inicialização do sistema, incluindo o kernel, arquivos de configuração do boot loader (ex. GRUB), e a imagem inicial do sistema.</li>
</ul>
</li>
<li><p><strong><code>/dev</code> (Device Files)</strong>  </p>
<ul>
<li>Contém arquivos especiais que representam dispositivos do sistema, como discos rígidos (<code>/dev/sda</code>), portas USB, entre outros. Esses arquivos permitem que o sistema interaja com os dispositivos.</li>
</ul>
</li>
<li><p><strong><code>/etc</code> (Host-Specific System Configuration)</strong>  </p>
<ul>
<li>Armazena arquivos de configuração do sistema. Contém diretórios e arquivos de configuração para vários programas e serviços, como o <code>passwd</code> (contas de usuários), arquivos de rede, etc.</li>
</ul>
</li>
<li><p><strong><code>/home</code> (User Home Directories)</strong>  </p>
<ul>
<li>É onde ficam os diretórios pessoais dos usuários. Cada usuário tem seu próprio diretório em <code>/home</code> (por exemplo, <code>/home/student</code> e <code>/home/linuxgym</code> na imagem). Esses diretórios guardam arquivos pessoais e configurações de cada usuário.</li>
</ul>
</li>
<li><p><strong><code>/lib</code> (Essential Shared Libraries and Kernel Modules)</strong>  </p>
<ul>
<li>Contém as bibliotecas essenciais usadas por binários em <code>/bin</code> e <code>/sbin</code>, além dos módulos do kernel que auxiliam o sistema a funcionar corretamente.</li>
</ul>
</li>
<li><p><strong><code>/media</code> (Mount Point for Removable Media)</strong>  </p>
<ul>
<li>Diretório onde dispositivos removíveis, como pen drives e CDs, são montados automaticamente para que o sistema possa acessar seus dados.</li>
</ul>
</li>
<li><p><strong><code>/mnt</code> (Mount Point for Temporarily Mounted Filesystems)</strong>  </p>
<ul>
<li>Usado para montar temporariamente sistemas de arquivos, como partições adicionais ou dispositivos de armazenamento externos.</li>
</ul>
</li>
<li><p><strong><code>/opt</code> (Add-on Application Software Packages)</strong>  </p>
<ul>
<li>Destinado a softwares adicionais ou pacotes de aplicativos externos que não fazem parte do sistema principal, como softwares de terceiros.</li>
</ul>
</li>
<li><p><strong><code>/sbin</code> (System Binaries)</strong>  </p>
<ul>
<li>Armazena comandos essenciais usados principalmente pelo administrador do sistema, como <code>reboot</code>, <code>shutdown</code>, etc. Esses comandos geralmente exigem permissões de superusuário.</li>
</ul>
</li>
<li><p><strong><code>/srv</code> (Data for Services Provided by This System)</strong>  </p>
<ul>
<li>Guarda dados relacionados a serviços específicos que o sistema fornece, como arquivos para servidores web e FTP.</li>
</ul>
</li>
<li><p><strong><code>/tmp</code> (Temporary Files)</strong>  </p>
<ul>
<li>Contém arquivos temporários criados por usuários ou pelo sistema. Esse diretório é limpo regularmente, e arquivos dentro dele podem ser excluídos a qualquer momento.</li>
</ul>
</li>
<li><p><strong><code>/usr</code> (Multi-user Utilities and Applications)</strong>  </p>
<ul>
<li>Um diretório com aplicativos e utilitários para uso geral de todos os usuários. Contém subdiretórios como <code>/usr/bin</code> (binários de usuários), <code>/usr/lib</code> (bibliotecas) e <code>/usr/local</code> (software instalado manualmente).</li>
</ul>
</li>
<li><p><strong><code>/var</code> (Variable Files)</strong>  </p>
<ul>
<li>Guarda arquivos variáveis, como logs do sistema, bancos de dados, e-mail e arquivos de spool (impressão, e-mail, etc). Esses arquivos são modificados frequentemente enquanto o sistema está em uso.</li>
</ul>
</li>
<li><p><strong><code>/root</code> (Home Directory for the Root User)</strong>  </p>
<ul>
<li>Diretório pessoal do superusuário <code>root</code>. Diferente do <code>/home</code>, que contém diretórios de outros usuários, o <code>/root</code> é exclusivo para o administrador.</li>
</ul>
</li>
<li><p><strong><code>/proc</code> (Virtual Filesystem Documenting Kernel and Process Status as Text Files)</strong>  </p>
<ul>
<li>É um sistema de arquivos virtual que contém informações sobre processos e o estado do kernel, com arquivos e diretórios que representam processos e outros dados do sistema em tempo real.</li>
</ul>
</li>
</ol>
<h3>Complementos:</h3>
<ul>
<li><strong><code>/usr/local</code></strong>: Um diretório específico dentro de <code>/usr</code> que é usado para armazenar softwares instalados manualmente pelo usuário, evitando conflitos com pacotes de software gerenciados pelo sistema.</li>
<li><strong>Arquivos de sistema em <code>/usr/local/bin</code> e <code>/usr/local/games</code></strong>: Armazenam binários e jogos que foram instalados manualmente pelo usuário.</li>
</ul>
]]></content:encoded>
      <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
      <itunes:summary><![CDATA[<p><img src="https://image.nostr.build/0df61cc2f75abe25735557e56d2b1070ab443e76ed15ded83f89f16de379af3f.jpg" alt="Filesystem_Hierarchy_Standard"></p>
<ol>
<li><p><strong><code>/</code> (Root Directory)</strong>  </p>
<ul>
<li>É o diretório raiz de todo o sistema de arquivos. Todos os outros diretórios e arquivos estão localizados dentro dele. Representa o ponto inicial da estrutura hierárquica.</li>
</ul>
</li>
<li><p><strong><code>/bin</code> (Essential User Command Binaries)</strong>  </p>
<ul>
<li>Contém comandos essenciais que são usados pelos usuários e pelo sistema, como <code>ls</code>, <code>cp</code>, <code>mv</code>, etc. Esses comandos podem ser executados tanto pelo usuário comum quanto pelo administrador.</li>
</ul>
</li>
<li><p><strong><code>/boot</code> (Static Files of the Boot Loader)</strong>  </p>
<ul>
<li>Guarda os arquivos necessários para a inicialização do sistema, incluindo o kernel, arquivos de configuração do boot loader (ex. GRUB), e a imagem inicial do sistema.</li>
</ul>
</li>
<li><p><strong><code>/dev</code> (Device Files)</strong>  </p>
<ul>
<li>Contém arquivos especiais que representam dispositivos do sistema, como discos rígidos (<code>/dev/sda</code>), portas USB, entre outros. Esses arquivos permitem que o sistema interaja com os dispositivos.</li>
</ul>
</li>
<li><p><strong><code>/etc</code> (Host-Specific System Configuration)</strong>  </p>
<ul>
<li>Armazena arquivos de configuração do sistema. Contém diretórios e arquivos de configuração para vários programas e serviços, como o <code>passwd</code> (contas de usuários), arquivos de rede, etc.</li>
</ul>
</li>
<li><p><strong><code>/home</code> (User Home Directories)</strong>  </p>
<ul>
<li>É onde ficam os diretórios pessoais dos usuários. Cada usuário tem seu próprio diretório em <code>/home</code> (por exemplo, <code>/home/student</code> e <code>/home/linuxgym</code> na imagem). Esses diretórios guardam arquivos pessoais e configurações de cada usuário.</li>
</ul>
</li>
<li><p><strong><code>/lib</code> (Essential Shared Libraries and Kernel Modules)</strong>  </p>
<ul>
<li>Contém as bibliotecas essenciais usadas por binários em <code>/bin</code> e <code>/sbin</code>, além dos módulos do kernel que auxiliam o sistema a funcionar corretamente.</li>
</ul>
</li>
<li><p><strong><code>/media</code> (Mount Point for Removable Media)</strong>  </p>
<ul>
<li>Diretório onde dispositivos removíveis, como pen drives e CDs, são montados automaticamente para que o sistema possa acessar seus dados.</li>
</ul>
</li>
<li><p><strong><code>/mnt</code> (Mount Point for Temporarily Mounted Filesystems)</strong>  </p>
<ul>
<li>Usado para montar temporariamente sistemas de arquivos, como partições adicionais ou dispositivos de armazenamento externos.</li>
</ul>
</li>
<li><p><strong><code>/opt</code> (Add-on Application Software Packages)</strong>  </p>
<ul>
<li>Destinado a softwares adicionais ou pacotes de aplicativos externos que não fazem parte do sistema principal, como softwares de terceiros.</li>
</ul>
</li>
<li><p><strong><code>/sbin</code> (System Binaries)</strong>  </p>
<ul>
<li>Armazena comandos essenciais usados principalmente pelo administrador do sistema, como <code>reboot</code>, <code>shutdown</code>, etc. Esses comandos geralmente exigem permissões de superusuário.</li>
</ul>
</li>
<li><p><strong><code>/srv</code> (Data for Services Provided by This System)</strong>  </p>
<ul>
<li>Guarda dados relacionados a serviços específicos que o sistema fornece, como arquivos para servidores web e FTP.</li>
</ul>
</li>
<li><p><strong><code>/tmp</code> (Temporary Files)</strong>  </p>
<ul>
<li>Contém arquivos temporários criados por usuários ou pelo sistema. Esse diretório é limpo regularmente, e arquivos dentro dele podem ser excluídos a qualquer momento.</li>
</ul>
</li>
<li><p><strong><code>/usr</code> (Multi-user Utilities and Applications)</strong>  </p>
<ul>
<li>Um diretório com aplicativos e utilitários para uso geral de todos os usuários. Contém subdiretórios como <code>/usr/bin</code> (binários de usuários), <code>/usr/lib</code> (bibliotecas) e <code>/usr/local</code> (software instalado manualmente).</li>
</ul>
</li>
<li><p><strong><code>/var</code> (Variable Files)</strong>  </p>
<ul>
<li>Guarda arquivos variáveis, como logs do sistema, bancos de dados, e-mail e arquivos de spool (impressão, e-mail, etc). Esses arquivos são modificados frequentemente enquanto o sistema está em uso.</li>
</ul>
</li>
<li><p><strong><code>/root</code> (Home Directory for the Root User)</strong>  </p>
<ul>
<li>Diretório pessoal do superusuário <code>root</code>. Diferente do <code>/home</code>, que contém diretórios de outros usuários, o <code>/root</code> é exclusivo para o administrador.</li>
</ul>
</li>
<li><p><strong><code>/proc</code> (Virtual Filesystem Documenting Kernel and Process Status as Text Files)</strong>  </p>
<ul>
<li>É um sistema de arquivos virtual que contém informações sobre processos e o estado do kernel, com arquivos e diretórios que representam processos e outros dados do sistema em tempo real.</li>
</ul>
</li>
</ol>
<h3>Complementos:</h3>
<ul>
<li><strong><code>/usr/local</code></strong>: Um diretório específico dentro de <code>/usr</code> que é usado para armazenar softwares instalados manualmente pelo usuário, evitando conflitos com pacotes de software gerenciados pelo sistema.</li>
<li><strong>Arquivos de sistema em <code>/usr/local/bin</code> e <code>/usr/local/games</code></strong>: Armazenam binários e jogos que foram instalados manualmente pelo usuário.</li>
</ul>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/0f751041ec427bdb98eeb1b18573036ecc15c5582bae50e71b046cbdd0ae0ca2.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[Explicando a Mempool]]></title>
      <description><![CDATA[Este post tem como objetivo esclarecer o conceito de mempool e seus componentes para iniciantes ou leigos em Bitcoin. As seções a seguir, em conjunto, oferecem informações essenciais para aqueles que desejam monitorar o estado da rede e tomar decisões fundamentadas sobre taxas e o tempo de confirmação de suas transações.]]></description>
             <itunes:subtitle><![CDATA[Este post tem como objetivo esclarecer o conceito de mempool e seus componentes para iniciantes ou leigos em Bitcoin. As seções a seguir, em conjunto, oferecem informações essenciais para aqueles que desejam monitorar o estado da rede e tomar decisões fundamentadas sobre taxas e o tempo de confirmação de suas transações.]]></itunes:subtitle>
      <pubDate>Mon, 11 Nov 2024 02:39:11 GMT</pubDate>
      <link>https://anima.npub.pro/post/1731281025873/</link>
      <comments>https://anima.npub.pro/post/1731281025873/</comments>
      <guid isPermaLink="false">naddr1qqxnzdenxyersvfsxg6nsdenqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28dx76wv</guid>
      <category>Bitcoin</category>
      
        <media:content url="https://image.nostr.build/4be36e3dbb035a174dcec4d2c3806778624bb026ad9fc9b65418da28f6c755f2.png" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/4be36e3dbb035a174dcec4d2c3806778624bb026ad9fc9b65418da28f6c755f2.png" length="0" 
          type="image/png" 
        />
      <noteId>naddr1qqxnzdenxyersvfsxg6nsdenqgsxhewvq6fq9lzjmfwqrpg2ufgl09uh2cksupa853zxv04u2fva4uqrqsqqqa28dx76wv</noteId>
      <npub>npub1d0jucp5jqt799kjuqxzs4cj377tew43dpcr60fzyvcltc5jemtcqryyvcy</npub>
      <dc:creator><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></dc:creator>
      <content:encoded><![CDATA[<h3>Primeiramente, o que é mempool?</h3>
<p>Abreviação de memory pool (ou <em>"pool de memória"</em>) a mempool é uma espécie de fila onde as transações de Bitcoin ficam temporariamente armazenadas antes de serem confirmadas e incluídas em um bloco na blockchain.<br>Quando você realiza uma transação em uma rede blockchain, essa transação precisa ser validada e confirmada pelos mineradores (ou validadores). Porém, ela não é processada instantaneamente. Primeiro, ela vai para a mempool, onde aguarda até que um minerador a selecione para incluir no próximo bloco.</p>
<p>É assim: </p>
<ul>
<li>Você envia uma transação, ela é transmitida para a rede e vai parar na mempool de vários nós (computadores) que suportam a rede blockchain.</li>
<li>As transações na mempool são organizadas pela taxa de transação que foi anexada. Quanto maior a taxa, mais rápido os mineradores tendem a escolher essa transação para incluí-la em um bloco, pois isso aumenta os ganhos deles.</li>
<li>Os mineradores pegam as transações da mempool, criam um bloco com elas e, ao minerar (confirmar) esse bloco, as transações saem da mempool e entram na blockchain.</li>
</ul>
<p>Aqui irei usar o site <a href="https://mempool.emzy.de/">mempool.emzy.de</a> como referência, mas é importante entender que sites de mempool são representações visuais da mempool de um nó específico e não <em>a mempool do Bitcoin</em> em si. Ela não é centralizada, cada nó da rede mantém a sua própria versão da mempool. Assim, ela pode variar de um nó para outro. Esses sites ajudam a visualizar dados sobre transações e taxas.</p>
<p>É uma boa prática usar <strong>VPN</strong> ou <strong>Tor</strong> ao acessar tais sites se você estiver verificando uma transação específica sua, pois sua privacidade pode ficar comprometida se o site registrar esses dados. Se você estiver repetidamente acessando-o para monitorar a confirmação de uma transação, alguém pode conseguir correlacionar o endereço IP com essa atividade e revelar uma conexão indireta com o endereço da transação.</p>
<p>Dito isso...</p>
<h3>Como interpretar a mempool?</h3>
<p>Vamos dividir isso em partes para fins didáticos.</p>
<hr>
<p><img src="https://image.nostr.build/4be36e3dbb035a174dcec4d2c3806778624bb026ad9fc9b65418da28f6c755f2.png" alt="greenblocks"></p>
<h4>Faixa de taxas</h4>
<p>Cada bloco verde representa uma faixa de taxa medida em satoshis por vByte (sats/vB).<br>Essa unidade de medida representa o valor pago por byte ocupado pela transação.<br>Quanto maior a taxa paga por uma transação, mais rápido ela tende a ser confirmada.<br>Quanto maior a transação em bytes, mais você precisa pagar para que ela seja confirmada.<br>Cada transação Bitcoin consiste em <em>entradas</em> e <em>saídas</em> (<em>inputs</em> e <em>outputs</em>):</p>
<ul>
<li><strong>Entradas</strong> são referências a transações anteriores que estão sendo gastas, e cada entrada inclui informações como o endereço de origem, a assinatura (que valida a transação e pode variar de tamanho dependendo da complexidade da chave e do método de assinatura utilizado (como SegWit, que é mais eficiente). Quanto mais complexa a assinatura, maior será o tamanho em bytes) e outros dados. Quanto mais entradas uma transação tiver, maior será seu tamanho.</li>
<li><strong>Saídas</strong> representam o destino do Bitcoin, e quanto mais saídas, maior será o tamanho da transação. Embora as saídas ocupem menos espaço em bytes do que as entradas.</li>
</ul>
<p>Ex.: </p>
<ul>
<li>~4 sat/vB: Indica uma taxa média. Significa que, em média, as transações estão sendo processadas a 4 satoshis por vByte;</li>
<li>3-5 sat/vB: Isso significa que as transações estão sendo processadas com uma taxa entre 3 e 5 satoshis por vByte.</li>
</ul>
<h4>MB</h4>
<p>Simplesmente o tamanho do bloco medido em megabytes :)</p>
<h4>Número de transações</h4>
<p>Essa seção informa quantas transações estão aguardando confirmação para cada faixa de taxa (bloco). Quanto maior o número de transações, maior a demanda pela faixa de taxa especificada.</p>
<h4>Tempo estimado para confirmação</h4>
<p>Aqui é mostrado o tempo médio de espera para transações que pagam taxas dentro da faixa especificada. Se você pagar uma taxa maior, a transação será confirmada mais rapidamente; uma taxa menor significa que a transação pode levar mais tempo para ser confirmada, especialmente se a rede estiver congestionada.  </p>
<hr>
<p><img src="https://image.nostr.build/4dafc88e54f68cafcffdff4a3e58c52d08076c14c3b3ea17afcb1f8f4b4b9443.png" alt="transationfees"><br>Esta seção mostra sugestões de taxa em diferentes níveis de prioridade para os usuários:</p>
<h4>Sem Prioridade</h4>
<p>Exibe a taxa mínima necessária para transações que não precisam de confirmação rápida.</p>
<h4>Prioridade Baixa</h4>
<p>Sugestão de taxa para transações que podem esperar um tempo moderado, com expectativa de confirmação em um ou dois blocos.</p>
<h4>Prioridade Média e Alta</h4>
<p>São as faixas de taxa recomendadas para quem precisa que a transação seja confirmada rapidamente. "Prioridade Alta" paga uma taxa maior, garantindo que a transação seja incluída no próximo bloco.</p>
<hr>
<p><img src="https://image.nostr.build/3d455253783dc137620f5541fb0a2816816e40ab63c0becf94241277e9177f77.png" alt="purpleblocks"><br>Cada bloco roxo representa um bloco recém-minerado. As informações mostradas incluem:  </p>
<h4>Taxa média paga</h4>
<p>Refere-se à taxa média em satoshis/vB paga por todas as transações incluídas em um bloco recém-minerado. Isso reflete o valor médio que os usuários estão dispostos a pagar para que suas transações sejam confirmadas rapidamente.</p>
<h4>Número de transações</h4>
<p>Este número indica quantas transações foram processadas no bloco minerado. O tamanho do bloco é limitado, então, quanto maior o número de transações, menor será o espaço disponível para novas transações, o que pode influenciar as taxas de transação.</p>
<h4>Tempo desde a mineração</h4>
<p>Esta métrica informa quanto tempo se passou desde que o bloco foi minerado e adicionado à blockchain.</p>
<h4>Pool de mineração</h4>
<p>Exibe o nome do pool de mineração que minerou o bloco, como AntPool. Grandes pools de mineração têm mais chances de minerar blocos regularmente devido ao alto hashrate (medida da capacidade computacional utilizada pelos mineradores) que possuem.  </p>
<hr>
<p><img src="https://image.nostr.build/15b0e9411c7c7849166592b1963ee1132f44568edf236de23a73fbceacf147c7.png" alt="ajustededificuldade"><br>Essa seção mostra informações sobre o ajuste de dificuldade, que ocorre aproximadamente a cada duas semanas.  </p>
<h4>Tempo médio dos blocos (~9,9 minutos):</h4>
<p>Este é o tempo médio atual para minerar um bloco na rede. A meta da rede é manter o tempo de bloco em cerca de 10 minutos; um tempo menor indica um aumento na taxa de hash, ou seja, que mais poder computacional foi adicionado à rede.</p>
<h4>Mudança de dificuldade (+1,46%):</h4>
<p>A dificuldade ajusta-se a cada 2016 blocos para manter o tempo médio de bloco próximo de 10 minutos. Um aumento na dificuldade, como +1,46%, indica que a mineração ficou mais difícil devido ao aumento do hashrate, enquanto uma redução na dificuldade indica que o hashrate diminuiu.</p>
<h4>Tempo até o próximo ajuste:</h4>
<p>É o tempo previsto até o próximo ajuste de dificuldade (7 dias, nesse caso), o que é crucial para manter a rede estável e garantir a segurança e a regularidade do processo de mineração.</p>
<hr>
<p><img src="https://image.nostr.build/88eb7f39ef8abcf7a7277ea73e40f6d4e498f790dff35c2924b1f71830d57cd2.png" alt="halving"><br>Quanto tempo demora até o próximo halving, um evento no Bitcoin que ocorre aproximadamente a cada 210.000 blocos minerados, ou cerca de quatro anos. Durante o halving, a recompensa que os mineradores recebem por adicionar um novo bloco à blockchain é reduzida pela metade.</p>
<hr>
<p><img src="https://image.nostr.build/ba01bec20ac89e4c4e0b5cdef8e17c0a017a2a442e6d8f05ed29418a98ab81c8.png" alt="Goggles"><br>Um diagrama visual da mempool que mostra o estado das transações pendentes na rede.  </p>
<h4>Tamanhos de blocos</h4>
<p>O tamanho de cada quadrado representa o tamanho da transação em bytes.<br><strong>Filtros (Consolidação, Coinjoin, Dados):</strong> Permite visualizar categorias específicas de transações:</p>
<ul>
<li><strong>Consolidação</strong>: Transações de consolidação agrupam pequenos UTXOs em um único UTXO maior para simplificar e baratear futuras transações. (UTXOs merecem um artigo dedicado)</li>
<li><strong>Coinjoin</strong>: Transações CoinJoin são usadas para melhorar a privacidade, misturando transações de vários usuários em uma única transação.</li>
<li><strong>Dados</strong>: Mostra transações que contêm dados adicionais, que podem incluir informações não financeiras, como mensagens.</li>
</ul>
<hr>
<p><img src="https://image.nostr.build/230420c2d4c98515aca4cf29a8c256d22df5eb20cba4ef6e4fe03004aa5a4d37.png" alt="GraficodaMempool"><br>Este gráfico exibe o número de transações recebidas ao longo do tempo.  </p>
<h4>Taxa mínima (1 sat/vB):</h4>
<p>Indica a taxa mínima atualmente aceita pela mempool. Se a mempool estiver cheia, transações que paguem menos do que a taxa mínima podem ser excluídas para dar lugar a transações de maior prioridade.</p>
<h4>Uso de memória (259 MB / 300 MB):</h4>
<p>A mempool tem um limite de memória. Quando está cheia, transações de taxa mais baixa podem ser descartadas para abrir espaço para aquelas com taxas mais altas, priorizando-as para inclusão em blocos.</p>
<h4>Transações não confirmadas (59.361):</h4>
<p>Indica o número total de transações pendentes que aguardam confirmação. Quanto maior o número de transações na mempool, maior a probabilidade de que as taxas aumentem para garantir uma confirmação mais rápida.</p>
<hr>
<p><img src="https://image.nostr.build/27290fd029b1baeee5f18dada6208218047cb9f480145426c998b521fcb97b8e.png" alt="RecentReplacements"><br>Essa seção mostra transações que foram substituídas utilizando o mecanismo RBF (Replace-By-Fee), que permite substituir uma transação com uma taxa mais alta para acelerar sua confirmação.  </p>
<h4>TXID</h4>
<p>Este é o identificador da transação (Transaction ID), exibido parcialmente para abreviar o espaço. Cada transação tem um identificador único na blockchain.</p>
<h4>Previous fee</h4>
<p>Exibe a taxa de transação original paga na primeira tentativa, medida em satoshis por vByte (sat/vB). Esta taxa inicial provavelmente era baixa demais, resultando em uma demora na confirmação.</p>
<h4>New fee</h4>
<p>Mostra a nova taxa de transação, também em satoshis por vByte, definida para substituir a taxa anterior. Uma taxa maior aumenta as chances de inclusão rápida em um bloco.</p>
<h4>Status (RBF)</h4>
<p>RBF indica que a transação foi substituída utilizando o recurso "Replace-By-Fee". Isso significa que a nova transação cancelou e substituiu a original, e o minerador escolherá a transação com a taxa mais alta para incluir no próximo bloco.</p>
<hr>
<p><img src="https://image.nostr.build/cc54d2b804efe456bbaae0da8821287ce056af3c3a8b6bff8bfcd9a55c93c222.png" alt="RecentTransactions"><br>Esta seção lista transações recentes que entraram na mempool e aguardam confirmação.  </p>
<h4>TXID</h4>
<p> Similar ao "Recent Replacements", este é o identificador único da transação.</p>
<h4>Amount</h4>
<p> Exibe a quantidade de Bitcoin transferida nessa transação, geralmente em frações de BTC (como 0.0001 BTC). Esta é a quantia enviada pelo remetente ao destinatário.</p>
<h4>USD</h4>
<p>Mostra o valor da transação em dólares americanos (USD), calculado com base na taxa de câmbio atual. Serve para dar uma ideia de quanto a transação representa em moeda fiduciária.</p>
<h4>Fee</h4>
<p> Exibe a taxa de transação paga, em satoshis por vByte (sat/vB). Uma taxa mais alta em relação à média aumenta a probabilidade de confirmação mais rápida, pois as transações com taxas mais elevadas são priorizadas pelos mineradores.</p>
<hr>
<p>E acabou. Espero que isso tenha sido útil para você e tenha agregado mais entendimento sobre esse complexo e maravilhoso mundo do Bitcoin. Se foi, considere compartilhar com alguém que precise. E se tem sugestões de melhoria, por favor, não deixe de comentar, o conhecimento está dispero na sociedade.<br>Por fim, stay humble and stack sats!</p>
]]></content:encoded>
      <itunes:author><![CDATA[ΜΟΛΩΝ ΛΑΒΕ]]></itunes:author>
      <itunes:summary><![CDATA[<h3>Primeiramente, o que é mempool?</h3>
<p>Abreviação de memory pool (ou <em>"pool de memória"</em>) a mempool é uma espécie de fila onde as transações de Bitcoin ficam temporariamente armazenadas antes de serem confirmadas e incluídas em um bloco na blockchain.<br>Quando você realiza uma transação em uma rede blockchain, essa transação precisa ser validada e confirmada pelos mineradores (ou validadores). Porém, ela não é processada instantaneamente. Primeiro, ela vai para a mempool, onde aguarda até que um minerador a selecione para incluir no próximo bloco.</p>
<p>É assim: </p>
<ul>
<li>Você envia uma transação, ela é transmitida para a rede e vai parar na mempool de vários nós (computadores) que suportam a rede blockchain.</li>
<li>As transações na mempool são organizadas pela taxa de transação que foi anexada. Quanto maior a taxa, mais rápido os mineradores tendem a escolher essa transação para incluí-la em um bloco, pois isso aumenta os ganhos deles.</li>
<li>Os mineradores pegam as transações da mempool, criam um bloco com elas e, ao minerar (confirmar) esse bloco, as transações saem da mempool e entram na blockchain.</li>
</ul>
<p>Aqui irei usar o site <a href="https://mempool.emzy.de/">mempool.emzy.de</a> como referência, mas é importante entender que sites de mempool são representações visuais da mempool de um nó específico e não <em>a mempool do Bitcoin</em> em si. Ela não é centralizada, cada nó da rede mantém a sua própria versão da mempool. Assim, ela pode variar de um nó para outro. Esses sites ajudam a visualizar dados sobre transações e taxas.</p>
<p>É uma boa prática usar <strong>VPN</strong> ou <strong>Tor</strong> ao acessar tais sites se você estiver verificando uma transação específica sua, pois sua privacidade pode ficar comprometida se o site registrar esses dados. Se você estiver repetidamente acessando-o para monitorar a confirmação de uma transação, alguém pode conseguir correlacionar o endereço IP com essa atividade e revelar uma conexão indireta com o endereço da transação.</p>
<p>Dito isso...</p>
<h3>Como interpretar a mempool?</h3>
<p>Vamos dividir isso em partes para fins didáticos.</p>
<hr>
<p><img src="https://image.nostr.build/4be36e3dbb035a174dcec4d2c3806778624bb026ad9fc9b65418da28f6c755f2.png" alt="greenblocks"></p>
<h4>Faixa de taxas</h4>
<p>Cada bloco verde representa uma faixa de taxa medida em satoshis por vByte (sats/vB).<br>Essa unidade de medida representa o valor pago por byte ocupado pela transação.<br>Quanto maior a taxa paga por uma transação, mais rápido ela tende a ser confirmada.<br>Quanto maior a transação em bytes, mais você precisa pagar para que ela seja confirmada.<br>Cada transação Bitcoin consiste em <em>entradas</em> e <em>saídas</em> (<em>inputs</em> e <em>outputs</em>):</p>
<ul>
<li><strong>Entradas</strong> são referências a transações anteriores que estão sendo gastas, e cada entrada inclui informações como o endereço de origem, a assinatura (que valida a transação e pode variar de tamanho dependendo da complexidade da chave e do método de assinatura utilizado (como SegWit, que é mais eficiente). Quanto mais complexa a assinatura, maior será o tamanho em bytes) e outros dados. Quanto mais entradas uma transação tiver, maior será seu tamanho.</li>
<li><strong>Saídas</strong> representam o destino do Bitcoin, e quanto mais saídas, maior será o tamanho da transação. Embora as saídas ocupem menos espaço em bytes do que as entradas.</li>
</ul>
<p>Ex.: </p>
<ul>
<li>~4 sat/vB: Indica uma taxa média. Significa que, em média, as transações estão sendo processadas a 4 satoshis por vByte;</li>
<li>3-5 sat/vB: Isso significa que as transações estão sendo processadas com uma taxa entre 3 e 5 satoshis por vByte.</li>
</ul>
<h4>MB</h4>
<p>Simplesmente o tamanho do bloco medido em megabytes :)</p>
<h4>Número de transações</h4>
<p>Essa seção informa quantas transações estão aguardando confirmação para cada faixa de taxa (bloco). Quanto maior o número de transações, maior a demanda pela faixa de taxa especificada.</p>
<h4>Tempo estimado para confirmação</h4>
<p>Aqui é mostrado o tempo médio de espera para transações que pagam taxas dentro da faixa especificada. Se você pagar uma taxa maior, a transação será confirmada mais rapidamente; uma taxa menor significa que a transação pode levar mais tempo para ser confirmada, especialmente se a rede estiver congestionada.  </p>
<hr>
<p><img src="https://image.nostr.build/4dafc88e54f68cafcffdff4a3e58c52d08076c14c3b3ea17afcb1f8f4b4b9443.png" alt="transationfees"><br>Esta seção mostra sugestões de taxa em diferentes níveis de prioridade para os usuários:</p>
<h4>Sem Prioridade</h4>
<p>Exibe a taxa mínima necessária para transações que não precisam de confirmação rápida.</p>
<h4>Prioridade Baixa</h4>
<p>Sugestão de taxa para transações que podem esperar um tempo moderado, com expectativa de confirmação em um ou dois blocos.</p>
<h4>Prioridade Média e Alta</h4>
<p>São as faixas de taxa recomendadas para quem precisa que a transação seja confirmada rapidamente. "Prioridade Alta" paga uma taxa maior, garantindo que a transação seja incluída no próximo bloco.</p>
<hr>
<p><img src="https://image.nostr.build/3d455253783dc137620f5541fb0a2816816e40ab63c0becf94241277e9177f77.png" alt="purpleblocks"><br>Cada bloco roxo representa um bloco recém-minerado. As informações mostradas incluem:  </p>
<h4>Taxa média paga</h4>
<p>Refere-se à taxa média em satoshis/vB paga por todas as transações incluídas em um bloco recém-minerado. Isso reflete o valor médio que os usuários estão dispostos a pagar para que suas transações sejam confirmadas rapidamente.</p>
<h4>Número de transações</h4>
<p>Este número indica quantas transações foram processadas no bloco minerado. O tamanho do bloco é limitado, então, quanto maior o número de transações, menor será o espaço disponível para novas transações, o que pode influenciar as taxas de transação.</p>
<h4>Tempo desde a mineração</h4>
<p>Esta métrica informa quanto tempo se passou desde que o bloco foi minerado e adicionado à blockchain.</p>
<h4>Pool de mineração</h4>
<p>Exibe o nome do pool de mineração que minerou o bloco, como AntPool. Grandes pools de mineração têm mais chances de minerar blocos regularmente devido ao alto hashrate (medida da capacidade computacional utilizada pelos mineradores) que possuem.  </p>
<hr>
<p><img src="https://image.nostr.build/15b0e9411c7c7849166592b1963ee1132f44568edf236de23a73fbceacf147c7.png" alt="ajustededificuldade"><br>Essa seção mostra informações sobre o ajuste de dificuldade, que ocorre aproximadamente a cada duas semanas.  </p>
<h4>Tempo médio dos blocos (~9,9 minutos):</h4>
<p>Este é o tempo médio atual para minerar um bloco na rede. A meta da rede é manter o tempo de bloco em cerca de 10 minutos; um tempo menor indica um aumento na taxa de hash, ou seja, que mais poder computacional foi adicionado à rede.</p>
<h4>Mudança de dificuldade (+1,46%):</h4>
<p>A dificuldade ajusta-se a cada 2016 blocos para manter o tempo médio de bloco próximo de 10 minutos. Um aumento na dificuldade, como +1,46%, indica que a mineração ficou mais difícil devido ao aumento do hashrate, enquanto uma redução na dificuldade indica que o hashrate diminuiu.</p>
<h4>Tempo até o próximo ajuste:</h4>
<p>É o tempo previsto até o próximo ajuste de dificuldade (7 dias, nesse caso), o que é crucial para manter a rede estável e garantir a segurança e a regularidade do processo de mineração.</p>
<hr>
<p><img src="https://image.nostr.build/88eb7f39ef8abcf7a7277ea73e40f6d4e498f790dff35c2924b1f71830d57cd2.png" alt="halving"><br>Quanto tempo demora até o próximo halving, um evento no Bitcoin que ocorre aproximadamente a cada 210.000 blocos minerados, ou cerca de quatro anos. Durante o halving, a recompensa que os mineradores recebem por adicionar um novo bloco à blockchain é reduzida pela metade.</p>
<hr>
<p><img src="https://image.nostr.build/ba01bec20ac89e4c4e0b5cdef8e17c0a017a2a442e6d8f05ed29418a98ab81c8.png" alt="Goggles"><br>Um diagrama visual da mempool que mostra o estado das transações pendentes na rede.  </p>
<h4>Tamanhos de blocos</h4>
<p>O tamanho de cada quadrado representa o tamanho da transação em bytes.<br><strong>Filtros (Consolidação, Coinjoin, Dados):</strong> Permite visualizar categorias específicas de transações:</p>
<ul>
<li><strong>Consolidação</strong>: Transações de consolidação agrupam pequenos UTXOs em um único UTXO maior para simplificar e baratear futuras transações. (UTXOs merecem um artigo dedicado)</li>
<li><strong>Coinjoin</strong>: Transações CoinJoin são usadas para melhorar a privacidade, misturando transações de vários usuários em uma única transação.</li>
<li><strong>Dados</strong>: Mostra transações que contêm dados adicionais, que podem incluir informações não financeiras, como mensagens.</li>
</ul>
<hr>
<p><img src="https://image.nostr.build/230420c2d4c98515aca4cf29a8c256d22df5eb20cba4ef6e4fe03004aa5a4d37.png" alt="GraficodaMempool"><br>Este gráfico exibe o número de transações recebidas ao longo do tempo.  </p>
<h4>Taxa mínima (1 sat/vB):</h4>
<p>Indica a taxa mínima atualmente aceita pela mempool. Se a mempool estiver cheia, transações que paguem menos do que a taxa mínima podem ser excluídas para dar lugar a transações de maior prioridade.</p>
<h4>Uso de memória (259 MB / 300 MB):</h4>
<p>A mempool tem um limite de memória. Quando está cheia, transações de taxa mais baixa podem ser descartadas para abrir espaço para aquelas com taxas mais altas, priorizando-as para inclusão em blocos.</p>
<h4>Transações não confirmadas (59.361):</h4>
<p>Indica o número total de transações pendentes que aguardam confirmação. Quanto maior o número de transações na mempool, maior a probabilidade de que as taxas aumentem para garantir uma confirmação mais rápida.</p>
<hr>
<p><img src="https://image.nostr.build/27290fd029b1baeee5f18dada6208218047cb9f480145426c998b521fcb97b8e.png" alt="RecentReplacements"><br>Essa seção mostra transações que foram substituídas utilizando o mecanismo RBF (Replace-By-Fee), que permite substituir uma transação com uma taxa mais alta para acelerar sua confirmação.  </p>
<h4>TXID</h4>
<p>Este é o identificador da transação (Transaction ID), exibido parcialmente para abreviar o espaço. Cada transação tem um identificador único na blockchain.</p>
<h4>Previous fee</h4>
<p>Exibe a taxa de transação original paga na primeira tentativa, medida em satoshis por vByte (sat/vB). Esta taxa inicial provavelmente era baixa demais, resultando em uma demora na confirmação.</p>
<h4>New fee</h4>
<p>Mostra a nova taxa de transação, também em satoshis por vByte, definida para substituir a taxa anterior. Uma taxa maior aumenta as chances de inclusão rápida em um bloco.</p>
<h4>Status (RBF)</h4>
<p>RBF indica que a transação foi substituída utilizando o recurso "Replace-By-Fee". Isso significa que a nova transação cancelou e substituiu a original, e o minerador escolherá a transação com a taxa mais alta para incluir no próximo bloco.</p>
<hr>
<p><img src="https://image.nostr.build/cc54d2b804efe456bbaae0da8821287ce056af3c3a8b6bff8bfcd9a55c93c222.png" alt="RecentTransactions"><br>Esta seção lista transações recentes que entraram na mempool e aguardam confirmação.  </p>
<h4>TXID</h4>
<p> Similar ao "Recent Replacements", este é o identificador único da transação.</p>
<h4>Amount</h4>
<p> Exibe a quantidade de Bitcoin transferida nessa transação, geralmente em frações de BTC (como 0.0001 BTC). Esta é a quantia enviada pelo remetente ao destinatário.</p>
<h4>USD</h4>
<p>Mostra o valor da transação em dólares americanos (USD), calculado com base na taxa de câmbio atual. Serve para dar uma ideia de quanto a transação representa em moeda fiduciária.</p>
<h4>Fee</h4>
<p> Exibe a taxa de transação paga, em satoshis por vByte (sat/vB). Uma taxa mais alta em relação à média aumenta a probabilidade de confirmação mais rápida, pois as transações com taxas mais elevadas são priorizadas pelos mineradores.</p>
<hr>
<p>E acabou. Espero que isso tenha sido útil para você e tenha agregado mais entendimento sobre esse complexo e maravilhoso mundo do Bitcoin. Se foi, considere compartilhar com alguém que precise. E se tem sugestões de melhoria, por favor, não deixe de comentar, o conhecimento está dispero na sociedade.<br>Por fim, stay humble and stack sats!</p>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/4be36e3dbb035a174dcec4d2c3806778624bb026ad9fc9b65418da28f6c755f2.png"/>
      </item>
      
      </channel>
      </rss>
    