- Voltar ao menu
- Voltar ao menuPreços
- Voltar ao menuPesquisar
- Voltar ao menuConsenso
- Voltar ao menu
- Voltar ao menu
- Voltar ao menu
- Voltar ao menuWebinars e Eventos
Modelo de segurança do Bitcoin: um mergulho profundo
O CoinDesk dá uma olhada nos bastidores para entender quais recursos de segurança são e T são oferecidos pelo Bitcoin.
Quando discutindo mecanismos de consenso para diferentes criptomoedas, um problema que frequentemente causa discussões é a falta de entendimento (e definição) do modelo de segurança que elas fornecem para os dados históricos no livro-razão. Embora cada modelo de consenso tenha como objetivo evitar vários ataques teóricos, é importante entender os objetivos do modelo.
Todo modelo de segurança tem duas partes principais: suposições e garantias. Se as suposições usadas como entradas forem verdadeiras, então as garantias que são produzidas pelo modelo também devem ser.
Vamos analisar o modelo de segurança que parece ser oferecido aos usuários de Bitcoin que executam um nó completo.
Em busca da verdade
“Um dos pontos fortes do bitcoin – o mais importante na minha Opinião – é o baixo grau de confiança que você precisa nos outros.” –Pedro Wuille
O objetivo dos livros-razão distribuídos é fornecer um histórico ordenado de Eventos, porque em sistemas distribuídos você T pode simplesmente confiar em um registro de data e hora.
Quando um novo participante em uma rede baseada em blockchain se junta, ele baixa todos os blocos disponíveis e considera todas as séries válidas de blocos que vê, começando por um bloco de gênese codificado.
Uma das maiores suposições feitas pelo modelo de segurança do bitcoin é que a maioria dos mineradores são honestos – que eles estão trabalhando para proteger o blockchain em vez de tentar miná-lo. Na prática, isso tem sido verdade ao longo da história do bitcoin devido aos incentivos dos mineradores, embora alguma perguntase isso continuará sendo verdade no futuro.
Dada essa suposição, os operadores de nós completos podem estar completamente seguros de vários fatos:
- Ninguém inflou a oferta monetária, exceto os mineradores, e apenas de acordo com um cronograma bem definido.
- Ninguém jamais gastou dinheiro sem ter a(s) chave(s) privada(s) apropriada(s).
- Ninguém nunca gastou o mesmo dinheiro duas vezes.
Operadores de full node podem ter certeza razoável de várias outras coisas. Há uma forte garantia de que:
- Qualquer bloco na cadeia foi criado dentro de aproximadamente duas horas do registro de data e hora do bloco.
- Eles estão sincronizando o histórico “verdadeiro” do blockchain.
Em um nível mais técnico, isso requer uma infinidade de verificações:
- Todos os blocos Siga as regras de consenso:
- Cada bloco éacorrentado a um bloco pai
- Cada bloco atingiu sua meta de dificuldade e temprova suficiente de trabalho
- Os carimbos de data/hora do bloco caem em umjanela relativa aos blocos recentes
- A raiz Merklecorresponde às transações do bloco
- Não havia blocosmaior que o tamanho máximo permitido
- A primeira (e única primeira) transação de cada blocoé uma transação coinbase
- As saídas da Coinbase T pagam mais do que recompensa de bloco apropriada
- Nenhum bloco continha mais do que ooperações de assinatura permitidas
- Todas as transações Siga as regras de consenso:
- Valores de entrada e saídasão sãos
- Transaçõesgastar somente saídas não gastas
- Todos os insumos sendo gastostem assinaturas válidas
- Nenhuma saída de transação coinbase foi gastadentro de 100 blocos de sua criação.
- Nenhuma transaçãogastar entradas com um tempo de bloqueioantes do bloco em que são confirmados.
- Muitas outras regrasisso levaria muito tempo para ser abordado aqui.
Segurança termodinâmica
Depois que uma transação é confirmada em um bloco, ela T pode ser revertida sem que alguém gaste uma quantidade mínima de energia para reescrever a cadeia.
Desde que nenhum invasor detenha mais de 50% do poder computacional da rede, e nós honestos possam se comunicar rapidamente, a probabilidade de uma transação ser revertida diminui exponencialmente com o número de confirmações que recebeu. Existem outros ataques,como mineração egoísta, que podem reduzir essa necessidade de energia, embora pareçam difíceis de serem executadas.

Olhando para o trabalho cumulativo atual realizado pelos mineradores de Bitcoin , seriam necessários quase 1026 hashes para construir uma blockchain alternativa a partir do genesis com maior prova de trabalho cumulativa que os nós completos considerariam ser a cadeia "verdadeira".

Para fazer algumas contas sobre o custo envolvido em tal ataque:
Um Antminer S9 roda a 0,1 Joule por GH (109 hashes)
1026 hashes * 0,1 J / 109 hashes = 1015 joules
1015 joules = 2.777.777.778 kw horas * $ 0,10 kw/hora = $ 277.777.778 em eletricidade para reescrever todo o blockchain
Enquanto isso, no momento em que este artigo foi escrito, um único bloco deve atingir uma meta de dificuldade de 253.618.246.641, o que exigiria aproximadamente:
253.618.246.641 * 248 / 65535 = 1,09 * 1021 hashes
1,09 * 1021 hashes * 0,1 J / 109 hashes = 1,09 * 1011 joules
1,09 * 1011 joules = 30.278 kw horas * $ 0,10 kw/hora = $ 3.028 em eletricidade por bloco
É por isso que podemos afirmar que o Bitcoin é comprovadamente termodinamicamente seguro.
Existem algumas variáveis que você pode ajustar no cálculo acima para diminuir o custo, mas podemos ter certeza de que serão necessários muitos milhões de dólares em eletricidade somente para reescrever todo o blockchain. No entanto, um invasor com tanto poder de hash seria, na pior das hipóteses, capaz de reverter transações de volta para 2014 – vamos nos aprofundar no motivo disso em breve.
Observe também que isso T leva em consideração os custos necessários para obter e operar equipamento de mineração suficiente para realizar tal ataque.
Resistência Sybil
Como o protocolo Bitcoin considera que a cadeia verdadeira é ONE com a prova de trabalho mais cumulativa (não a cadeia mais longa, como muitas vezes é incorretamente afirmado), o resultado é que um novo par que se junta à rede só precisa se conectar a um único par honesto para encontrar a cadeia verdadeira.
Isso também é conhecido como “resistência Sybil”, o que significa que não é possível que alguém lance um ataque contra um nó criando muitos pares desonestos que o alimentam com informações falsas.

Aqui está retratado um cenário NEAR do pior caso em que seu nó está sendo massivamente atacado por Sybil, mas ainda tem uma única conexão com um nó honesto que está conectado à verdadeira rede Bitcoin . Enquanto um único peer honesto estiver passando os verdadeiros dados do blockchain para seu nó completo, ficará bem claro que qualquer invasor Sybil está tentando enganá-lo e seu nó irá ignorá-lo.
Consenso em tempo real
O protocolo Bitcoin cria uma série de outros atributos interessantes no que diz respeito à manutenção do consenso em toda a rede quando seu nó está na ponta do blockchain.
Os autores de “Perspectivas de pesquisa e desafios para Bitcoin e criptomoedas”observe as seguintes propriedades que são importantes para a estabilidade de uma Criptomoeda:
Consenso eventual. A qualquer momento, todos os nós compatíveis concordam com um prefixo do que se tornará o eventual blockchain “verdadeiro”.
Convergência exponencial. A probabilidade de uma bifurcação de profundidade n é O(2−n). Isso dá aos usuários alta confiança de que uma regra simples de “k confirmações” garantirá que suas transações sejam liquidadas permanentemente.
Vivacidade. Novos blocos continuarão a ser adicionados e transações válidas com taxas apropriadas serão incluídas no blockchain dentro de um período de tempo razoável.
Correção. Todos os blocos na cadeia com a prova de trabalho mais cumulativa incluirão apenas transações válidas.
Justiça. Um minerador com X% do poder computacional total da rede minerará aproximadamente X% dos blocos.
Os autores do artigo observam que o Bitcoin parece ter essas propriedades, pelo menos sob a suposição de que a maioria dos mineradores permaneça honesta, que é o que o bloco recompensa junto com a tentativa de prova de trabalho para incentivar.
Existem muitos outros algoritmos que podem ser usados para manter o consenso em sistemas distribuídos, como:
- Prova de Participação
- Prova da idade da moeda
- Comprovante de depósito
- Prova de Queimadura
- Prova de atividade
- Prova de Tempo Decorrido
- Consenso Federado
- Tolerância prática a falhas bizantinas
Isso cria diferentes modelos de segurança – a diferença mais óbvia da prova de trabalho é que cada consenso dos sistemas alternativos é impulsionado às custas de recursos internos (moedas ou reputação) em vez de recursos externos (eletricidade). Isso cria um conjunto muito diferente de incentivos para (e confiança em) validadores na rede, o que muda drasticamente o modelo de segurança.
Mal-entendidos sobre o modelo de segurança
Uma suposição equivocada comum é que existe um modelo de segurança bem definido para o Bitcoin.
Na realidade, o protocolo Bitcoin foi e está sendo construído sem uma especificação formalmente definida ou modelo de segurança. O melhor que podemos fazer é estudar os incentivos e o comportamento dos atores dentro do sistema para melhor entendê-lo e tentar descrevê-lo.
Dito isto, há algumas propriedades do protocolo Bitcoin que são frequentemente analisadas incorretamente.
Algumas blockchains sofreram tanto com ataques que os desenvolvedores adicionarampostos de controle assinados e transmitidos centralmenteno software do nó, essencialmente dizendo que “o bloco X foi validado pelos desenvolvedores como estando na cadeia histórica correta”. Este é um ponto de extrema centralização.
Vale a pena notar que o Bitcoin tem 13 pontos de verificação codificados, mas eles não alteram o modelo de segurança da maneira que os pontos de verificação transmitidos fazem. O último ponto de verificação foi adicionado aBitcoin CORE 0.9.3e está no bloco 295000, que foi criado em 9 de abril de 2014. Este bloco teve uma dificuldade de 6.119.726.089, o que exigiria aproximadamente:
6.119.726.089 * 248 / 65535 = 2,62 * 1019 hashes
2,62 * 1019 hashes * 0,1 J / 109 hashes = 2,62 * 109 joules
2,62 * 109 joules = 728 kw horas * $ 0,10 kw/hora = $ 73 em eletricidade para gerar
Assim, se um invasor Sybil cercasse completamente um novo nó que estivesse sincronizando do zero, ele poderia criar alguns blockchains curtos em alturas baixas, quase sem custo, mas apenas até os vários blocos com pontos de verificação.
Se ele particionasse um nó da rede que tivesse sincronizado além do bloco 295.000, ele seria capaz de começar a alimentar blocos falsos ao custo de US$ 73 por bloco, pelo menos até atingir um reajuste de dificuldade. No entanto, quanto mais longe o nó vítima tivesse sincronizado, maior seria o custo para o invasor criar uma cadeia com mais trabalho cumulativo.
Ambos Greg Maxwell e Pedro Wuille declararam que esperam um dia remover completamente os pontos de verificação. O mantenedor líder do Bitcoin CORE, Wladimir van der Laan, observou que os pontos de verificação são uma fonte constante de confusãopara pessoas que buscam entender o modelo de segurança do bitcoin.
Pode-se argumentar que isso significa que um nó completo está “confiando” nos desenvolvedores do CORE em relação à validade do histórico do blockchain até 9 de abril de 2014, mas o nó ainda verifica os hashes Merkle no cabeçalho de cada bloco, o que significa que a solidez do histórico de transações ainda é garantida pela prova de trabalho. Esses antigos pontos de verificação permitir um aumento de desempenho(ignorando a verificação de assinatura) ao sincronizar inicialmente o blockchain histórico, embora a introdução do libsecp256k1 tenha tornado odiferença de desempenho menos significativa.
Os pontos de verificação permanecem
em vigor para três propósitos:
- Para evitar que os nóstendo sua memória preenchidacom cabeçalhos de bloco de prova de trabalho válidos, mas baixos
- Ignorando assinaturas em blocos anteriores (melhoria de desempenho)
- Para estimar o progresso da sincronização
Enquanto este artigo estava sendo escrito Greg Maxwellproposta de substituição de postos de controlecom umverificação cumulativa de trabalhoem vez disso. Uma vez que um nó tenha uma cadeia que contenha mais de 5,4 * 1024 hashes realizados, cadeias com menos trabalho cumulativo seriam rejeitadas. Isso coincide com a quantidade de trabalho realizado até aproximadamente o bloco 320.000 em setembro de 2014, ponto em que os blocos individuais eram de dificuldade ~27.000.000.000.

Blocos de mineração com uma dificuldade de 27.000.000.000 exigiriam aproximadamente
27.000.000.000 * 248 / 65535 = 1,16 * 1020 hashes
1,16 * 1020 hashes * 0,1 J / 109 hashes = 1,16 * 1010 joules
1,16 * 1010 joules = 3.222 kw horas * $ 0,10 kw/hora = $ 322 em eletricidade por bloco
Assim, com essa mudança proposta, se um invasor Sybil cercasse completamente um novo nó que estivesse sincronizando do zero, ele seria capaz de começar a alimentar blocos falsos começando em qualquer bloco após o genesis basicamente sem custo algum. Se um invasor Sybil cercasse completamente um nó que sincronizasse além do bloco ~320.000, ele poderia começar a alimentar uma cadeia falsa daquele ponto ao custo de US$ 322 por bloco.
Resumindo, é relativamente barato atacar qualquer verificação para proteger a sincronização inicial de um nó se uma entidade puder obter controle total da conexão de Internet do seu nó; se T puder, o nó facilmente ignorará os bloqueios do invasor.
Em uma nota relacionada, cada sistema de blockchain tem seubloco de gênese codificadono software do nó. Você poderia argumentar que há um contrato social para o “histórico compartilhado” que é o livro-razão – uma vez que um bloco é antigo o suficiente, há um entendimento entre todos na rede de que ele nunca será revertido. Como tal, quando os desenvolvedores pegam um bloco muito antigo e criam um ponto de verificação a partir dele, isso é feito mais como uma verificação de sanidade acordada do que como um ditado da história.
Além dos checkpoints, há também a questão de como um nó se autoinicializa. O processo atual para nós de Bitcoin é verificar se ele tem um banco de dados local de pares que ele aprendeu anteriormente. Se não, ele consultará um conjunto de “DNS Seeds” que são codificado no software. Essas sementes mantêm uma lista de nós Bitcoin bem conectados que eles retornam ao seu nó.
Como podemos ver no código, o Bitcoin CORE 0.13 atualmente usa DNS Seeds executados por Pieter Wuille, Matt Corallo, Luke Dashjr, Christian Decker, Jeff Garzik e Jonas Schnelli. Qualquer um pode executar uma semente DNS usando o Pieter Wuille's software de semeador de bitcoin ou Software de Matt Corallo, embora para que ele possa ser usado por novos nós você teria que convencer os desenvolvedores de uma das implementações de nós completos a adicionar seu host de DNS ao software deles.
Pode parecer mais uma vez um ponto de extrema centralização que o processo de bootstrapping para um novo nó dependa de apenas seis sementes DNS. Lembre-se de que o modelo de segurança do bitcoin requer apenas que você se conecte a um único peer honesto para poder resistir aos ataques Sybil.
Como tal, um novo nó só precisa ser capaz de se conectar a uma única semente DNS que T esteja comprometida e retorne endereços IP de nós honestos. No entanto, há um fallback se, por algum motivo, todas as sementes DNS forem inacessíveis – um lista codificadade endereços IP de nós confiáveis queé atualizadopara cada lançamento.
O modelo de segurança para esses vários parâmetros de inicialização não é que o operador do nó completo esteja confiando nas sementes X DNS ou nos desenvolvedores Y CORE para alimentá-los com dados honestos, mas sim que pelo menos 1/X sementes DNS não sejam comprometidas ou 1/Y desenvolvedores CORE sejam honestos sobre revisão da validade de alterações de pares codificadas.
Nada é perfeitamente seguro
Em um nível ainda mais profundo, quando você executa um nó completo, provavelmente está confiando no hardware e no software que está executando até certo ponto.
Existem métodos para verificar o software porverificando as assinaturas do seu bináriocontra os de van der Laan, mas é improvável que muitas pessoas se incomodem em passar por esse processo. Quanto ao hardware confiável, esse é um problema difícil. O mais próximo que você provavelmente chegará de uma solução de hardware segura é algo comoORWL, que garantia que se “autodestruiria” caso alguém tentasse adulterá-lo.

No entanto, como as arquiteturas de hardware para CPUs, RAM e outros hardwares importantes tendem a ser proprietárias, você nunca pode ter 100% de certeza de que elas T estão comprometidas.
Equilíbrio de poder do Bitcoin
As águas ficam ainda mais turvas quando você começa a investigar a relação entre os diferentes participantes do sistema.
O propósito de executar um nó completo é proteger sua soberania financeira. Isso geralmente significa que, ao instalar e executar uma versão específica de software, você está entrando em um acordo de que obedecerá às regras desse software e que todos os outros que usam a rede também devem obedecer a elas.
Assim, se as pessoas quiserem mudar as regras de uma forma que não seja compatível com versões anteriores, você deve concordar explicitamente com a mudança de regra executando uma nova versão do software. Por outro lado, mudanças de regras compatíveis com versões anteriores podem ser implementadas e aplicadas sem seu consentimento.
Uma descrição altamente simplificada da dinâmica de poder no Bitcoin:
[incorporar]https://twitter.com/lopp/status/786241843436544002[/embed]
É importante notar que o software full node não se atualiza automaticamente, e isso é por design. Atualizações automáticas mudariam muito o equilíbrio de poder para os desenvolvedores, permitindo que eles forçassem mudanças de regras sobre nodes e mineradores sem sua permissão.
Infelizmente, embora uma mudança de regra possa ser tecnicamente compatível com versões anteriores, Aprenda ao longo dos anos que soft forks suficientemente criativos podem realmente implementar mudanças que estão claramente fora da intenção da versão anterior das regras. Vitalik Buterin demonstrou issocom uma descrição de uma maneira de fazer um soft fork do tempo de bloco do bitcoin de 10 minutos para 2 minutos, o que obviamente também aceleraria o cronograma de emissão de novos bitcoins.
Há um trunfo que os full nodes têm para lutar contra soft forks indesejados: fazer hard fork longe dos mineradores que implementaram o soft fork. Isso é difícil de executar (por design) e levanta muitas questões sobre medir o consenso e encontrar os nós economicamente importantes.
Tecnicamente, isso poderia ser feito alterando o algoritmo do minerador de SHA256 duplo para uma função hash diferente, tornando todos os ASICs SHA256 inúteis para mineração de bitcoins. É por essa razão que os operadores de nó devem permanecer vigilantes às mudanças no ecossistema e lembrar aos mineradores que eles podem ser substituídos se excederem sua autoridade.
Muita teoria dos jogos está envolvida na discussão das operações de mineração e sua ameaça à segurança do bitcoin, e especulei sobre como o ecossistema de mineração pode mudarem um artigo anterior. Embora a mineração de Bitcoin seja mais centralizada do que a maioria de nós gostaria, ela ainda parece funcionar bem porque os mineradores de Bitcoin têm muito capital investido - eles T podem arriscar destruir seus investimentos agindo maliciosamente em um sistema onde todos estão observando.
Segurança SPV
Muitos usuários de Bitcoin utilizam um cliente leve para acessar a rede em vez de um nó completo, pois ele requer muito menos recursos e ainda oferece forte segurança.
Um cliente que emprega a Verificação de Pagamento Simplificada (SPV) baixa uma cópia completa dos cabeçalhos para todos os blocos em toda a cadeia. Isso significa que os requisitos de download e armazenamento escalam linearmente com a quantidade de tempo desde que o Bitcoin foi inventado. Isso é descrito na seção 8 do whitepaper sobre Bitcoin.

Satoshi escreveu que um cliente SPV "T pode verificar a transação por si mesmo, mas ao vinculá-la a um lugar na cadeia, ele pode ver que um nó da rede a aceitou, e os blocos adicionados depois disso confirmam ainda mais que a rede a aceitou". O SPV assume que uma transação com X blocos de profundidade será custosa para ser falsificada.
O SPV parece oferecer garantias similares à segurança de nó completo, mas com uma suposição adicional de que qualquer bloco com um cabeçalho válido e prova de trabalho sempre contém transações válidas. Como os clientes SPV T verificam todas as regras de consenso observadas na primeira seção deste artigo, eles estão assumindo que as regras de consenso estão sendo verificadas pelo(s) nó(s) dos quais eles Request transações.
Uma diferença adicional e menor de segurança envolve pares retendo informações de você. Quando você está executando um nó completo, os pares podem reter transações e blocos não confirmados de você. No entanto, uma vez que você recebe um bloco de qualquer par, não é possível que ninguém retenha as transações naquele bloco de você. Por outro lado, é possível que um par forneça um cabeçalho de bloco a um cliente SPV e então retenha informações sobre transações naquele bloco.
Os clientes do SPV podem fazer uma consulta para Aprenda informações sobre transações que afetam um determinado endereço e, embora seja custoso para os pares mentirem para eles sobre a existência de transações falsas confirmadas (exigiria minerar um bloco com PoW suficiente), eles poderiam mentir por omissão alegando que não houve resultados para o filtro bloom que você usou para consultar as transações. Também vale a pena notar que o SPV é terrivelmente quebrado do ponto de vista da Política de Privacidadedevido a falhas nos filtros bloom.
BitcoinJ tem umexcelente redaçãodo modelo de segurança SPV. Em relação às transações não confirmadas, eles observam:
"No modo SPV, a única razão pela qual você tem que acreditar que a transação é válida é o fato de que os nós aos quais você se conectou retransmitiram a transação. Se um invasor pudesse garantir que você estava conectado aos nós dele, isso significaria que ele poderia lhe fornecer uma transação que era completamente inválida (gastou dinheiro inexistente), e ainda assim seria aceita como se fosse válida."
A segurança do SPV é provavelmente “boa o suficiente” para o usuário médio, embora possa ser melhorada com o SPV Fraud Proofs. Houvealguma discussão de este conceitomas não implementadopropostaspara incorporá-los ao protocolo.
Não há lugar como 127.0.0.1
Se você T estiver executando um nó completo (e realmente usando-o para validar transações), então você está terceirizando pelo menos algum nível de confiança para terceiros, resultando em um modelo de segurança diferente para seu uso do Bitcoin. Observe que isso não precisa exigir que todos os usuários e empresas criem seu software diretamente sobre a API RPC do Bitcoin Core.
Algumas configurações alternativas de infraestrutura podem incluir, mas não estão limitadas a:
1) Usando uma carteira móvel comoCarteira Bitcoin para Android,Endereço Verde, ou Esconderijoque permite que você configure a carteira para consultar apenas seu próprio nó completo.

2) Construir aplicativos em cima de bibliotecas de nós SPV como BitcoinJ e configurá-los para conectar-se apenas a nós completos que você opera. No BitcoinJ, isso pode ser feito definindo seu próprioSementes Peersque você passa para o seuGrupo de paresdurante a inicialização. Com libbitcoin você pode definir uma conexão de rede para um nó específicousando este exemplo.
3) Construir um servidor proxy que seja compatível com a API JSON-RPC do Bitcoin Core que envie algumas chamadas para serviços de terceiros, mas também verifique automaticamente os dados que eles retornam fazendo chamadas para um nó completo local. Para um exemplo, veja Software BitGoD da BitGo. Este modelo híbrido pode lhe dar o melhor dos dois mundos: você pode aproveitar recursos avançados oferecidos por terceiros e ainda manter sua soberania financeira.
Nós completos para a liberdade
É claro que executar seu próprio nó completo oferece segurança superior com o mínimo de suposições necessárias. Dado que você pode construir um computador capaz de executar um nó completo confiável por apenas algumas centenas de dólares, faça as contas e determine se proteger sua soberania financeira vale o preço.
Agradecemos a Kristov ATLAS, Eric Martindale, Andrew Miller e Kiara Robles pela revisão e feedback para este artigo.
Imagem em destaque viaE Nott para CoinDesk. Outras imagens conforme legenda.
Jameson Lopp
Jameson Lopp é o CTO e cofundador da Casa, um serviço de autocustódia. Um cypherpunk cujo objetivo é construir Tecnologia que empodere indivíduos, ele vem construindo carteiras de Bitcoin multiassinatura desde 2015. Antes de fundar a Casa, ele foi o engenheiro-chefe de infraestrutura na BitGo. Ele é o fundador do Bitcoin Special Interest Group da Mensa, do Triangle Blockchain and Business meetup e de vários projetos de Bitcoin de código aberto. Durante todo esse tempo, ele trabalhou para educar outras pessoas sobre o que aprendeu da maneira mais difícil, enquanto escrevia software robusto que pode resistir tanto a adversários quanto a usuários finais não sofisticados.
