O Guia do desenvolvedor sobre como criar aplicativos distribuídos em tempo real

Kirill Shilov Blocked Unblock Seguir Seguindo 9 de janeiro https://fineartamerica.com/featured/peter-i-the-great-at-deptford-daniel-maclise.html

Atualmente, as aplicações descentralizadas estão mais ou menos no mesmo estágio de desenvolvimento que os carros durante o tempo de Henry Ford. Em outras palavras, usar o dApps é um processo lento, inseguro, e todo mundo sempre pergunta: "Que diabos é essa coisa?"

De fato, depois de quase um ano de um ciclo de mercado de baixa, o estado de dApps é como o de um deserto arrasado. Olhando para o atual estado de coisas nesta área , é fácil ver que a maioria dos projetos está seca, quase completamente morta. Neste contexto, no entanto, existem alguns aplicativos distribuídos cujos desenvolvedores ainda estão ativos. Há os projetos de sucesso que conquistaram a confiança dos participantes do mercado (como o Storj , cujo público diário ativo é mais da metade do público total de todos os dApps ). Naturalmente, à medida que a indústria se desenvolve, essa situação mudará. Mas, do jeito que está hoje, os aplicativos distribuídos continuam sendo o brinquedo dos geeks e dos entusiastas da criptografia. Isso se deve em parte à pequena penetração da esfera da criptomoeda na vida cotidiana, mas o fato permanece – essas aplicações são muito lentas e não confiáveis para serem aceitas pelas massas agora.

https://dappradar.com/charts

Requisitos para dApps no mundo real

Quais qualidades um aplicativo distribuído deve atender para satisfazer as necessidades de uma pessoa comum que está acostumada a serviços centralizados? Bem, eles não precisam de muito. Deve ser seguro e rápido; muito depressa! Deve ser lembrado que nenhuma consideração de descentralização e controle de dados forçará a pessoa média a preferir um aplicativo distribuído lento e atrasado a um aplicativo clássico rápido e conveniente.

O que quero dizer com "muito rápido"? Bem, o WhatsApp completa cerca de 60 bilhões de transações todos os meses , ou cerca de 700.000 tx / segundo. Este é aproximadamente o nível de velocidade que as aplicações descentralizadas devem buscar para representar uma forte competição contra seus “grandes irmãos” como o Telegram, o Facebook, o Whatsapp e muitos outros. Até onde estamos hoje? Muito, muito longe. O tempo de confirmação de transação em blockchains BTC e ETH é calculado em minutos (você pode encontrar algumas estimativas específicas aqui e aqui ); cerca de 7 transações por segundo passam pela rede Ethereum (o estado atual do blockchain pode ser rastreado aqui ).

https://www.blockchain.com/en/charts/n-transactions-per-block?timespan=1year

Devemos prestar homenagem aos esforços dos desenvolvedores da Ethereum que estão tentando tornar o blockchain significativamente mais rápido, como a implementação do Plasma . Mas estes números mostram que o caminho para a velocidade desejada não é curto. Portanto, recentemente, outras plataformas que se concentram na solução desse problema apareceram. Um exemplo impressionante de tal plataforma em que você pode desenvolver aplicativos distribuídos rápidos e convenientes é o #Metahash .

#MetaHash permite a criação de aplicativos descentralizados que funcionam em tempo real, como serviços e aplicativos comuns da Web e podem responder a eventos em qualquer um dos
as redes blockchain e na Internet regular. A rede #MetaHash permite um tempo de confirmação de 3 segundos a mais de 50.000 tx / s.

Esse desempenho excepcional é a razão pela qual este tutorial é dedicado a trabalhar com #MetaHash e criar um dApp com base em seu blockchain.

Trabalhando com o #MetaHash: um guia completo

No futuro, a rede #MetaHash incluirá uma série de módulos descentralizados para acelerar o desenvolvimento de novos projetos. Por exemplo, os criadores de cada projeto poderão usar o serviço #MetaChains existente em vez de criar seus próprios scripts de análise Bitcoin ou Ethereum.

Aqui descreveremos ações básicas como criar um endereço #MetaHash, enviar transações, bem como destacar as diferenças entre os ambientes de desenvolvimento testnet e mainnet. Para mais informações, você pode consultar o documento amarelo de # MetaHash .

Como configurar o ambiente de desenvolvimento

Para começar, você precisará do software cURL instalado em sua máquina e conhecimento básico das ferramentas de linha de comando. As funções criptográficas usadas pelo #MetaHash são baseadas na biblioteca OpenSSL , que você também precisará. Ambos os programas estão disponíveis para download gratuito e você pode encontrar instruções sobre como configurá-los aqui e aqui . Esteja ciente de que esses guias são dedicados aos usuários do Windows e, se você estiver usando outro sistema operacional, consulte os tutoriais específicos.

Como configurar o cliente (#MetaGate)

#MetaGate é um usuário-cliente leve com a opção de usar parte do disco rígido como um armazenamento de arquivo quando o modo de forjamento está ativo. Você pode baixar o cliente em metagate.metahash.org .

#MetaGate funciona como uma carteira de criptografia e um "portão" para a Internet descentralizada simultaneamente. Todos os que desenvolvem o seu próprio #MetaApp (um dApp criado no blockchain do #MetaHash) podem enviá-lo ao ecossistema através da interface acima.

Gerando chaves

Para concluir as transações e armazenar os recursos na criptomoeda #MetaHashCoin (MHC), é necessário ter uma carteira digital. Para criar programaticamente essa carteira, você precisará entender o único princípio fundamental do desenvolvimento de carteira – criptografia assimétrica .

A criptografia assimétrica envolve duas chaves criptográficas – uma chave pública e uma chave privada; a mensagem é criptografada com a chave pública e descriptografada com a chave privada secreta. Quando você realiza transações, todos os dados também são assinados com sua chave privada. Assim, as chaves irão atuar como sua principal ferramenta para cada ação.

Gerar uma chave privada é o primeiro passo para criar uma carteira, com um endereço para o qual você pode enviar e receber pagamentos na rede #MetaHash. Confirmando o direito de possuir o endereço só é possível com a chave privada.

Para gerar uma chave privada, você precisa usar um algoritmo criptográfico baseado na curva elíptica secp256r1 . Você pode usar sua implementação geral já disponível na biblioteca do OpenSSL: secp256k1 (prime256v1) da seguinte maneira:

Código (a ser inserido na ferramenta de linha de comando):

openssl ecparam -genkey -name secp256k1 -out test.pem

Com base na chave privada, uma chave pública deve ser gerada imediatamente.

Código:

openssl ec -em teste.pem -pubout -out test.pub

Criando um endereço

A presença de chaves privadas e públicas permite que você avance para a próxima etapa – criando um endereço. O endereço é o ID do usuário na rede #MetaHash, que é necessário para qualquer tipo de transação. Cada usuário na rede pode ter um número infinito de endereços que são armazenados em suas carteiras e usados para operações.

A sequência a seguir criará um endereço #MetaHash:

1. Pegue 65 bytes da chave pública (onde 1 byte significa '0x04', depois 32 bytes – correspondem à coordenada x, 32 bytes – à coordenada y dentro da rede).

Código:

openssl ecparam -genkey -name secp256k1 -out test.pem

openssl ec -em teste.pem -pubout -outform DER | tail -c 65 | xxd -p -c 65> btc_test.pub

2. A criptografia hash SHA-256 da chave pública é executada.

Código:

gato btc_teste.pub | xxd-rp | openssl dgst -sha256

(stdin) = 2969f47d4d442ed5210355741f1ca3908a62bee9b20a0c37db39b356d2aa0b8f

3. Em seguida, a função hash criptográfica RIPEMD-160 hashes o valor obtido na etapa anterior.

Código:

echo-e 'seu valor do passo 2' | xxd-rp / openssl dgst -rmd160

4. Sobre o valor recebido, o hashing de SHA-256 é executado novamente (veja o passo 2).

5. A partir do último valor, o hashing SHA-256 é executado novamente e somente os primeiros 4 bytes (ou 8 símbolos) do hash recebido são obtidos.

6. Esses 4 bytes são adicionados ao final do hash RIPEMD-160 da etapa 3 e o 0x é adicionado no início.

A saída é o endereço.

Operações com o endereço

Esta parte descreve os métodos usados para trabalhar com um endereço #MetaHash. As solicitações podem ser feitas na lista de servidores de torrent disponíveis no momento. Esses tipos de solicitações são válidos nas redes de produção e teste, conforme descrito abaixo.

Saldo atual

É possível descobrir o saldo atual do seu endereço #MetaHash usando o método fetch-balance.

Código

Entrada

curl -x POST – dados '

{

"Id": 1,

"Params":

{

endereço ”:“ 0x005511… 00000 ”/ / address

}

} 'XXX.XXX.XXX.XXX:YYYY/fetch-balance // IP: PORT / Method_name

Saída

{

"Id": 1,

"resultado":

{

“Endereço”: “0x005511… 00000”, / / address

"Recebido": 0, / / recebido (recebido)

"Gasto": 0, / / gasto (ido)

“Count_received”: 0, / / number of receipts

"Count_spent": 0, / / number of shipments

"Block_number": 0 ", / / número do bloco

“CurrentBlock”: 22, // número de blocos no momento

}

}

Histórico de transações

Na rede MetaHash, existe um método de busca de histórico que permite visualizar todo o histórico de transações de um endereço.

Código:

Entrada

curl -x POST – dados '

{

"Id": 1,

"Params":

{

endereço ”:“ 0x005… 555 ”/ / address

}

} 'XXX.XXX.XXX.XXX:YYYY/fetch-history // IP: PORT / Method_name

Saída

{

"Id": 1,

"resultado":

[

{

“From”: “0x001… b”, / / de qual endereço

“Para”: “0x00c… 8”, / / para qual endereço

“Value”: 10000000 ,, / / quanto

“Transaction”: “6b… 34”, transações // hash

}

{…}

]

}

Existem outros métodos como o get-tx na rede MetaHash. Para saber mais sobre eles, você pode consultar o portal de desenvolvimento #MetaHash ou acessar o #MetaHash GitHub .

https://github.com/metahashorg

Scripts em várias linguagens de programação – C ++, Shell, PHP, Python – suportando todos os métodos acima podem ser encontrados em https://github.com/metahashorg . O arquivo README para os repositórios descreve, em detalhes, como usar esses scripts, bem como fornece exemplos de sua aplicação em redes de teste ou produção.

Criando uma transação

Uma transação de rede é uma operação para transferir MHC entre os dois endereços. As transações dentro da rede #MetaHash são conduzidas na presença de uma assinatura digital. Os dados são então assinados com uma chave privada. Combinada com uma chave pública, a assinatura confirma que a transação foi criada pelo proprietário real do endereço #MetaHash fornecido.

O seguinte descreve a formação de uma transação na rede #MetaHash na forma de uma solicitação POST:

Código

curl -x POST – dados '

{

"Jsonrpc": "2.0", / / jsonrpc version

“Method”: “mhc_send”, / / nome do método

"Params":

{

“Para”: “0x00f… 9D”, / / endereço do destinatário

“Valor”: “1000000”, / / valor a ser enviado, aqui valor = 1 MHC

"Taxa": ", / / Comissão

"Nonce": "1", / / o número de transações de saída do endereço no momento da transação, ou seja, = count_spent + 1

“Data”: ””, / / dados anexados à transação em formato Hex

“Pubkey”: “305… e6aa”, // chave pública

“Assinar”: “304… 84” / / texto assinado: seqüência de valores de campos para, valor, taxa, nonce, contador de dados, dados

em formato binário (veja abaixo a assinatura de transações binárias), saiba mais sobre assinatura de texto.

}

} 'XXX.XXX.XXX.XXX:YYYY // IP: PORT. Você pode descobrir como obter uma lista de IP e PORT disponíveis lendo a próxima parte deste tutorial.

Resposta do sistema criptográfico

{

"Resultado": "ok",

“Params”: “dd2… 452” // hash da transação

}

ou

{

"Resultado": "ok",

"Erro": "Mensagem" / / mensagem de erro

}

Ambientes de produção versus teste

A rede MetaHash é um conjunto de servidores divididos em funções dentro da rede. A tecnologia #TraceChain opera várias redes, denominadas Rede de Teste (rede TMH) e Rede de Produção (rede MHC).

A rede de teste na rede #MetaHash é representada como net-dev e net-test, a rede da Rede de Produção possui o símbolo “net-main”.

A principal diferença entre as redes de teste e produção é que a rede de teste funciona não apenas com solicitações POST, como acontece na rede de produção, mas também pode trabalhar com solicitações GET.

Em qualquer uma dessas redes do #MetaHash, você pode sempre visualizar todo o registro de transações digitais, os exploradores são desenvolvidos para esse propósito. Todos os exploradores podem pesquisar por endereço, transação de hash ou número de bloco no blockchain para a conveniência dos usuários.

Os endereços dos exploradores:

Conclusão

Estamos gradualmente entrando na era dos aplicativos descentralizados. Ao desenvolver seus próprios dApps, você definitivamente enfrentará o problema de escolher um blockchain que melhor se adapte aos seus objetivos. Se seu objetivo for criar um aplicativo que tenha recursos em tempo real, como um jogo, uma sala de bate-papo ou uma rede social, o #MetaHash será um ótimo lugar para começar.