Você está na página 1de 5

Primeiramente, eu não entendo o porquê de ser cético com esta tecnologia (RaiBlocks).

Ela
é basicamente Bitcoin, sem mineradores com um sistema de consenso usando PoS ao
invés de PoW. Ainda usa toda mágica da Blockchain, criptografia de curvas elípticas e um
algoritmo de hash para fazer um PoW e evitar certos tipos de ataques (spam).

#1 - ​Ulrich: ​Como comprovar a existência máxima de 137milhoes de XRB?

R = A quantidade é de 133,248,289 XRB. É possível verificar a quantidade da mesma forma


que no Bitcoin. Baixando a ledge e fazendo a verificação. Se você não tem skills de
programação, precisa acreditar nos programadores que já fizeram isto.

Há uma outra maneira, mas depende de você confiar na informação. Por isto o método que
citei antes é o mais adequado. Mas você pode vir até aqui [1][2][3]. É uma lista com todas
as carteiras (atualizada de hora em hora). Incluindo carteiras públicas (exchanges e devs).

#2 - ​Ulrich: ​Como está a distribuição do XRB?

R = Ver [1][2][3]. A distribuição foi feita através de faucet e terminou em Outubro. Uma parte
foi reservada a equipe de desenvolvimento.

Segundo informações contidas no GitHub [4]:

“The initial distribution of XRB was performed through manual mining limited via a captcha.
There's also an overall rate limit set by the distribution schedule. The distribution rate was
17,000 Mxrb per hour. Distribution stopped after 39% as distributed and the rest of the
supply was burnt”.

#3 - ​Ulrich: ​Como as regras podem ser alteradas no RaiBlocks? Entendo perfeitamente


como isso ocorre no bitcoin (seja para aumentar tamanho do bloco, seja para mudar a regra
de 21m). Mas como isso se dá no XRB? Pelo que entendi, o dPoS resolve apenas o gasto
duplo, mas nao a questao de mudança de regras. Estou errado? Se quiserem criar mais
alguns milhões de XRB como isso seria feito?

R = Resumidamente: Consenso. Os nodes estão rodando um código e este código impede


que as regras sejam mudadas, pois as regras já foram escritas. Se elas forem mudadas, a
rede recusará, pois ela foi programada desta forma. Se quiserem criar mais alguns milhões
de XRB a rede bifurcaria, pois haveria recusa de que estes blocos são válidos. Como isto é
garantido? Por meio de algoritmos de redes e sistemas distribuídos e criptografia.

Tentarei resumir, mas nada do que eu digo substituí a leitura do WhitePaper. E no


WhitePaper vai estar escrito de uma forma muito melhor do que eu consigo escrever:

Na RaiBlocks, cada usuário valida sua própria transação. É bem simples, o usuário valida a
assinatura do outro e verifica “de onde vieram os tokens” (Assim como a Blockchain). A rede
não permite que outra conta modifique a conta de outrem. Se uma conta “encontrar algum
problema” (isto será explicado adiante), há uma bifurcação na rede (fork) e a rede precisa
entrar em consenso [5] (O X9 denuncia a rede que “houston we have a problem”).
Algoritmos de consenso, como o Paxos [6] são algoritmos bem conhecidos em ciência da
computação. São usados por empresas como Amazon, por exemplo, para manter réplicas
fidedignas nos servidores, garantindo integridade e autenticidade dos dados. Segundo o
próprio Wikipédia [5]:

“A fundamental problem in ​distributed computing and ​multi-agent systems is to achieve


overall system reliability in the presence of a number of faulty processes. This often requires
processes to agree on some data value that is needed during computation. Examples of
applications of consensus include whether to commit a transaction to a database, agreeing
on the identity of a ​leader​, ​state machine replication​, and ​atomic broadcasts​. The real world
applications include ​clock synchronization​, ​PageRank​, opinion formation, ​smart power grids​,
state estimation​, ​control of UAVs​, ​load balancing​ and others.”.

Entender a tecnologia por trás dos algoritmos de consenso é fundamental para entender
como as regras são alteradas. Na RaiBlocks este algoritmo de consenso é baseado em
Proof-of-Stake, logo “””””quem tem mais tokens têm mais poder de voto””””””, no Bitcoin,
Proof-of-work e “””””quem tem mais hashpower têm mais poder de voto”””” . Para fazer um
ataque de 51% no Bitcoin é preciso ter 51% do hashpower. No RaiBlocks, 51% dos tokens
(Você é economista. Tente comprar 51% para ver o que acontece :). Segundo informações
contidas no WhitePaper [7]:

“In a PoS system, participants vote with a weight equivalent to the amount of wealth they
possess in a given cryptocurrency. With this arrangement, those who have a greater
financial investment are given more power and are inherently incentivized to maintain the
honesty of the system or risk losing their investment. PoS does away with the wasteful
computation power competition, only requiring light-weight software running on low power
hardware”.

Este sistema de votos para atingir o consenso é conhecido em sistemas distribuídos como
Quorum [8] e este Quorum é o que mantém a integridade da ledge que está distribuída
[9][10], e garantindo certos tipos de tolerâncias a falhas. Nenhum sistema é totalmente
perfeito e consegue garantir tudo “because CAP theorem” [11][12]. Mas até onde entendo, o
Quorum só é usado em casos excepcionais quando a rede pode bifurcar. Cada conta vota
tem um “peso” de acordo com a quantidade de tokens que possui e há todo um algoritmo
(descrito no WhitePaper) em como a rede resolve as bifurcações. Eu prefiro replicar o que
está no WhitePaper, pois eu não poderia/saberia explicar de uma maneira melhor e talvez
português não seja uma boa língua para explicar isto:

“The ledger is the global set of accounts where each account has its own transaction chain.
This is a key design component that falls under the category of replacing a run-time
agreement with a design-time agreement; ​everyone agrees via signature checking that
only an account owner can modify their own chain​. This converts a seemingly shared
data structure, a distributed ledger, in to a set of non-shared ones”.

Repare que “​everyone agrees via signature checking that only an account owner can
modify their own chain​”. Isto está no código. Para você confiar em como isto é feito,
precisa entender a tecnologia por trás da criptografia assimétrica e sistemas distribuídos.

O que impede a RaiBlocks de ter mais moedas é o “genesis balance”. O sistema foi
“startado” assim. Todos os tokens vieram de um saldo gênesis. Esta conta gênesis
“assinou” as transações. Depois da rede ter todos os tokens distribuídos, ela passou a
rejeitar tokens vindos do nada. Lembra-se das assinaturas digitais ditas anteriormente? É
isto que garante. Se alguém criar um outro bloco, ele não terá uma referência anterior.
Porque, de facto, a RaiBlocks ainda usa a tecnologia de Blockchain. Entretanto, como não
há mineração, quem valida as transações são os próprios usuários.

Eu achei sua pergunta um pouco semelhante a pergunta que leigos fazem quando dizem:
“O que impede alguém de criar mais Bitcoins?”. Neste caso, quem impede é o PoW, a rede
de consenso obtida através dos mineradores. No caso da RaiBlocks, o algoritmo de
consenso distribuído através de PoS. Lembra-se do sistema de consenso dito
anteriormente? A rede não iria aceitar isto (porque foi programada para se manter integra e
isto pode ser verificado através do Código contido no GitHub [13]). Se alguém tentar essa
loucura, a rede se divide (fork). Como há no Bitcoin.

Vamos voltar ao WhitePaper (Boa parte das perguntas que você fez estão lá):

“A fork occurs when j signed blocks b1, b2, ..., bj claim the same block as their predecessor.
These blocks cause a conflicting view on the status of an account and must be resolved.
Only the account’s owner has the ability to sign blocks into their account-chain, so a fork
must be the result of poor programming or malicious intent (double-spend) by the account’s
owner.

Upon detection, a representative will create a vote referencing the block ˆbi in it’s ledger and
broadcast it to the network. The weight of a node’s vote, wi , is the sum of the balances of all
accounts that have named it as its representative. The node will observe incoming votes
from the other M online representatives and keep a cumulative tally for 4 voting periods, 1
minute total, and confirm the winning block.

The most popular block b ∗ will have the majority of the votes and will be retained in the
node’s ledger. The block(s) that lose the vote are discarded. If a representative replaces a
block in its ledger, it will create a new vote with a higher sequence number and broadcast
the new vote to the network. This is the only scenario where representatives vote. In some
circumstances, brief network connectivity issues may cause a broadcasted block to not be
accepted by all peers. Any subsequent block on this account will be ignored as invalid by
peers that did not see the initial broadcast. A rebroadcast of this block will be accepted by
the remaining peers and subsequent blocks will be retrieved automatically. Even when a fork
or missing block occurs, only the accounts referenced in the transaction are affected; the
rest of the network proceeds with processing transactions for all other accounts”
#4 - ​Ulrich: ​Por que rodar um node com 100% do historico nao eh uma necessidade? Eh ou
nao eh? Eh realmente opcional?

Isto depende. Assim como no Bitcoin, rodar um node é opcional. Você pode confiar em um
terceiro e não ter todo o histórico salvo. Assim como as pessoas confiam em exchanges ou
no blockchain.info para fazer transações. Agora, sobre ter uma light wallet, sinceramente,
eu ainda não sei como é feito. Tenho me concentrado em entender como a tecnologia foi
implementada agora (estou dando uma boa olhada no blake2b por exemplo). Isto ainda
será lançado, salvo engano.

Quando a light wallet vier, saberemos como isto é feito. Mas, com toda certeza, será usando
criptografia, algoritmos de consenso. Só haverá uma poda nas transações que não são
necessárias para garantir a integridade e o tamanho do blockchain será reduzido.

Disclaimer: Se você quiser realmente saber como tudo isto é feito, precisa ler o WhitePaper.
E se quiser confiar em como isto é feito, precisa estudar os algoritmos em que a RaiBlocks
se apoia (algoritmos de hash, curvas elípticas, algoritmos de sistemas distribuídos, redes,
etc). A computação é uma rede de confiança. Você confia que não há backdoors no seu
computador e que o NIST não colocou backdoors no SHA (confiança matemática). Confia e
que uma rede de matemáticos não estão em uma conspiração ou que a sua exchange não
vá te roubar (confiança pessoal), assim como confia no seu médico quando ele lhe dá
algum diagnóstico. Se você duvidar do conhecimento de especialistas de uma área, precisa
estudar a área destes especialistas. O que estou querendo dizer é que, se você duvida de
como a RaiBlocks é implementada e da sua segurança, precisa estudar o WhitePaper, os
algoritmos citados no WhitePaper (que a RaiBlocks se apoia) e estudar criptografia,
sistemas distribuídos, etc.

Se você quiser saber de outros ataques teóricos, recomendo que veja isto [14].

Respondendo a outras coisas que você disse por aí:

Ulrich: -Proof-of-Stake? Pre-mine?

Qual o problema com Proof-of-Stake? Não há pré-mine, no sentido de ter pré-mineração. Os


tokens foram distribuídos da maneira que citei lá em cima. Por meio de um faucet com um
captcha. Não vejo problema nisto. É um bom meio de distribuir as coins aleatoriamente (e de
graça). Milhares de venezuelanos ganharam umas XRB.

Ulrich: -Criadores detêm a vasta maioria dos XRB?

Sim. Isto acontece com várias moedas. Mas, olhando para o Bitcoin, o Satoshi Nakamoto
também tem uma boa parte de moedas, assim como uma parte do time do Bitcoin Core. Acho
mais que merecido. Eles implementaram a moeda e perderam um bom tempo das suas vidas
estudando os algoritmos que citei e escrevendo código.

Ulrich: -Sem taxa? Instantânea? E dizem que é segura?


Sem taxa e instantânea. É segura. E é segura não é porque “dizem”. É segura porque se
baseia em sistemas de consenso e criptografia. É só ler o WhitePaper. Se duvidar da
implementação de algum algoritmo, é só reclamar para o NIST e para toda comunidade de
criptólogos. Você pode ganhar bons prêmios de matemática e criptografia se encontrar
vulnerabilidades na criptografia moderna. Há também bonificações por encontrar
vulnerabilidades no código da RaiBlocks, que é aberto.

[1] ​https://raiblocks.net/page/frontiers.php
[2] ​https://raiblocks.net/page/knownaccounts.php
[3] ​https://raiblocks.net/page/representatives.php
[4] ​https://github.com/clemahieu/raiblocks/wiki/Distribution,-Mining-and-Units
[5] ​https://en.wikipedia.org/wiki/Consensus_(computer_science)
[6] ​https://en.wikipedia.org/wiki/Paxos_(computer_science)
[7] ​https://raiblocks.net/media/RaiBlocks_Whitepaper__English.pdf
[8] ​https://en.wikipedia.org/wiki/Quorum_(distributed_computing)
[9] ​https://en.wikipedia.org/wiki/Replication_(computing)
[10] ​https://en.wikipedia.org/wiki/Atomicity_(database_systems)
[11] ​https://en.wikipedia.org/wiki/CAP_theorem
[12] ​https://en.wikipedia.org/wiki/Byzantine_fault_tolerance
[13] ​http://github.com/clemahieu/raiblocks

Recomendo dar uma olhadela em:

[14] ​https://github.com/clemahieu/raiblocks/wiki/Attacks​ (importante)


[15] ​https://en.wikipedia.org/wiki/Two-phase_commit_protocol
[16] ​https://en.wikipedia.org/wiki/Three-phase_commit_protocol
[17] ​https://en.wikipedia.org/wiki/Two_Generals%27_Problem

Se eu disse alguma besteira ou você (leitor) tem algo a completar, por favor me corrija nos
comentários. Faz um tempinho que li o whitepaper e ando lendo muita coisa por aí. Posso
ter me confundido. Só quero dar a minha parcela de contribuição para o debate.

Cordialmente,
One Time Pad
04/01/2018

Você também pode gostar