Você pode escrever no blockchain do Bitcoin não apenas transações financeiras, mas também quase todos os dados. Os dados registrados na blockchain Bitcoin se tornam públicos e é quase impossível excluí-lo ou alterá-lo. Esse recurso pode ser usado, por exemplo, para criar sites descentralizados que não são passíveis de bloqueio.
Usando a biblioteca blockchaindata-lib, a gravação e a leitura de dados no blockchain podem ser organizadas em apenas algumas linhas de código.
As ferramentas
A biblioteca blockchaindata-lib está escrita em node.js. O código-fonte com exemplos está disponível no
github.com/3s3s/blockchaindata-lib github. Para adicionar uma biblioteca ao seu projeto, basta executar um comando no console
npm install blockchaindata-lib
Para trabalhar com o blockchain, você deve configurar o acesso RPC à carteira do Bitcoin ou a um fork compatível com o Bitcoin (Litecoin, Dogecoin, etc.). Por padrão, blockchaindata-lib tentará acessar o servidor RPC nos seguintes detalhes:
: http://127.0.0.1:18332 : rpc_btc_test : rpc_btc_password_test
Os padrões podem ser alterados pela função de biblioteca
updateNetwork(url, user, password)
Portanto, para trabalhar com a biblioteca, a primeira coisa que você precisa fazer é lançar uma carteira de teste Bitcoin:
- Faça o download da carteira Bitcoin (ou garfo compatível.)
- Crie o arquivo ~ / .bitcoin / bitcoin.conf (ou no Windows% APPDATA% / Bitcoin / bitcoin.conf)
- No arquivo bitcoin.conf, escreva as seguintes configurações
testnet=1 server=1 rpcbind=127.0.0.1 rpcallowip=127.0.0.1 rpcuser=rpc_btc_test rpcpassword=rpc_btc_password_test txindex=1
- Salve as alterações no bitcoin.conf e execute o bitcoind (ou no Windows bitcoin-qt.exe)
- Aguarde a sincronização da blockchain
Com as configurações acima, a carteira será lançada na rede de teste do Bitcoin.
Gravação de dados
No bitcoin, são proibidas transações nas quais não há despesas. Portanto, antes de escrever algo para a blockchain do Bitcoin, você definitivamente precisará reabastecer sua carteira. Bitcoins para uma rede de teste podem ser obtidos gratuitamente se você pesquisar no Google algo como "torneira bitcoin testnet". Quando a carteira é reabastecida, você pode finalmente gravar dados.
A biblioteca possui várias funções para registrar dados:
SaveTextToBlockchain( dataString ) SaveJSONToBlockchain( objectJSON ) SaveFileToBlockchain( data )
Em princípio, o que essas funções fazem é claro a partir do nome. Função Resultado - Objeto
{resultado: <verdadeiro | false>, mensagem: <string>, txid: <string>}
Considere um exemplo de uso:
'use strict'; const blockchaindata = require('blockchaindata-lib') async function test1() { try {
Se esse código for executado sem erros, o hash da transação será exibido no console. Você pode ler os dados desse hash.
Lendo dados
Para ler os dados registrados anteriormente na blockchain, você só precisa saber o hash da transação. A carteira pode estar vazia, ou seja, se você quiser apenas ler os dados, não será necessário reabastecer a carteira.
Exemplo de código
'use strict'; const blockchaindata = require('blockchaindata-lib'); async function test2() {
Se esse código funcionar sem erros, o texto html da página que eu salvei anteriormente na blockchain será exibido no console.
Onde se candidatar?
No blockchain, por exemplo, você pode salvar um site estático. Este site será praticamente impossível de excluir ou de alguma forma bloquear. No entanto, para ler esse site, você precisará de um software adicional: um novo navegador ou extensão do navegador.
A extensão do navegador é a solução mais fácil. Um exemplo dessa extensão pode ser encontrado aqui
github.com/3s3s/blockchaindataVocê pode baixar e instalar esta extensão para o Firefox aqui:
yadi.sk/d/a3xM9BCepP4nBwApós a instalação, o Firefox interceptará e processará links para sites no formato
http: // tbtc / <txid>
Por exemplo, esse link funcionará
http: // tbtc / 8af6633160b982a0b0b4d4962ad28e0d5b3dd97e05e27cc2dd64ec0c56820df5Eficácia
A biblioteca blockchaindata-lib compacta os dados antes de colocá-los no blockchain usando o algoritmo deflate, portanto esse método é especialmente eficaz para escrever documentos de texto. Durante o teste, consegui gravar até 70 kb de dados compactados na blockchain. Embora não haja restrições quanto ao tamanho dos dados recebidos, erros em grandes conjuntos de dados aparecem devido à implementação interna do código bitcoin.
Ao gravar dados no blockchain, é preciso também levar em consideração o componente financeiro. Ler e gravar dados na rede de teste do Bitcoin usando a biblioteca blockchaindata-lib é simples e gratuito. No entanto, se você deseja gravar dados na rede de trabalho do bitcoin, precisará levar em consideração o preço diferente de zero do bitcoin.