Atomic Swap - Bitcoin (BTC) vs Monero (XMR): mudanças entre as edições

De Área31 Hackerspace
Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
{{status
{{status
|status = Em construção
|status = Em construção
|progress = 10%
|progress = 70%
|update = [[Raphael Bastos - Coffnix|Raphael Bastos]] 21:40, 26 Abril 2021 (BRST) }}
|update = [[Raphael Bastos - Coffnix|Raphael Bastos]] 21:40, 26 Abril 2021 (BRST) }}


Linha 60: Linha 60:




===Inicie o primeiro node===
=Configuração dos nodes (monerod)=
==Inicie o primeiro node==
O nó 01 ouvirá as conexões na porta 28080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 38080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_01. Vamos definir a mineração fixa com dificuldade em 100. Você pode alterá-la para o valor que quiser. Dessa forma, podemos manter os blocos de mineração mais rápido.
O nó 01 ouvirá as conexões na porta 28080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 38080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_01. Vamos definir a mineração fixa com dificuldade em 100. Você pode alterá-la para o valor que quiser. Dessa forma, podemos manter os blocos de mineração mais rápido.


Linha 69: Linha 70:




===Inicie o segundo node===
==Inicie o segundo node==
O nó 02 ouvirá conexões na porta 38080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_02. Definimos com a mesma dificuldade do primeiro nó.
O nó 02 ouvirá conexões na porta 38080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_02. Definimos com a mesma dificuldade do primeiro nó.


Linha 78: Linha 79:




===Inicie o terceiro node===
==Inicie o terceiro node==
O nó ouvirá as conexões na porta 48080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 38080. Ele armazenará seu blockchain em ~/testnet/node_03. Definimos com a mesma dificuldade do primeiro e segundo nó.
O nó ouvirá as conexões na porta 48080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 38080. Ele armazenará seu blockchain em ~/testnet/node_03. Definimos com a mesma dificuldade do primeiro e segundo nó.


Linha 92: Linha 93:




===Crie novas carteiras na stagenet===
=Crie novas carteiras na stagenet=
Cada um dos nós terá uma carteira correspondente. Assim, criaremos as carteiras com os nomes '''wallet_01.bin''', '''wallet_02.bin''' e '''wallet_03.bin'''. Esses arquivos estarão no diretório '''~/testnet'''
Cada um dos nós terá uma carteira correspondente. Assim, criaremos as carteiras com os nomes '''wallet_01.bin''', '''wallet_02.bin''' e '''wallet_03.bin'''. Esses arquivos estarão no diretório '''~/testnet'''


Linha 99: Linha 100:
Execute os seguintes comandos para criar três carteiras sem senha.
Execute os seguintes comandos para criar três carteiras sem senha.


====wallet_01.bin====
==wallet_01.bin==
{{console|body=
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_01.bin  --restore-deterministic-wallet --electrum-seed="sequence atlas unveil summon pebbles tuesday beer rudely snake rockets different fuselage woven tagged bested dented vegan hover rapid fawns obvious muppet randomly seasons randomly" --password "" --log-file ~/testnet/wallet_01.log;
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_01.bin  --restore-deterministic-wallet --electrum-seed="sequence atlas unveil summon pebbles tuesday beer rudely snake rockets different fuselage woven tagged bested dented vegan hover rapid fawns obvious muppet randomly seasons randomly" --password "" --log-file ~/testnet/wallet_01.log;
Linha 112: Linha 113:
}}
}}


====wallet_02.bin====
==wallet_02.bin==
{{console|body=
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_02.bin  --restore-deterministic-wallet --electrum-seed="deftly large tirade gumball android leech sidekick opened iguana voice gels focus poaching itches network espionage much jailed vaults winter oatmeal eleven science siren winter" --password "" --log-file ~/testnet/wallet_02.log;
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_02.bin  --restore-deterministic-wallet --electrum-seed="deftly large tirade gumball android leech sidekick opened iguana voice gels focus poaching itches network espionage much jailed vaults winter oatmeal eleven science siren winter" --password "" --log-file ~/testnet/wallet_02.log;
Linha 125: Linha 126:
}}
}}


====wallet_03.bin====
==wallet_03.bin==
{{console|body=
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_03.bin  --restore-deterministic-wallet --electrum-seed="upstairs arsenic adjust emulate karate efficient demonstrate weekday kangaroo yoga huts seventh goes heron sleepless fungal tweezers zigzags maps hedgehog hoax foyer jury knife karate" --password "" --log-file ~/testnet/wallet_03.log;
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_03.bin  --restore-deterministic-wallet --electrum-seed="upstairs arsenic adjust emulate karate efficient demonstrate weekday kangaroo yoga huts seventh goes heron sleepless fungal tweezers zigzags maps hedgehog hoax foyer jury knife karate" --password "" --log-file ~/testnet/wallet_03.log;
Linha 140: Linha 141:




Após criar, surgirá uma imagem parecida com o exemplo abaixo. Pode encerrar as carteiras, iremos falar mais delas posteriormente:


[[Image:Wallet-03.png|1000px]]






[[Image:Monero-wallet-cli.png|1000px]]
=Comece a minerar=
Como você minera é totalmente opcional. Você pode minerar apenas a primeira carteira e manter as outras duas vazias por enquanto, ou minerar em dois nós, ou em todos os três.


Utilize os seguintes comandos para minerar as duas primeiras carteiras:


Feche a carteira, e execute novamente com a senha em parametro:
Digite no minerd do node_01 (mineração da primeira carteira):
{{console|body=
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --stagenet --wallet-file ~/MyWallet --password pgApFHQN5QZqk76Rpe2kKlvcohun6bX0Y2x6P5ELsV7uJ2DAxNb6wZffIIY6dD
start_mining  9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8 1
}}
 
Digite no minerd do node_02 (mineração da segunda carteira):
{{console|body=
start_mining  9wq792k9sxVZiLn66S3Qzv8QfmtcwkdXgM5cWGsXAPxoQeMQ79md51PLPCijvzk1iHbuHi91pws5B7iajTX9KTtJ4bh2tCh 1
}}
 
Digite no minerd do node_03 (mineração da primeira carteira):
{{console|body=
start_mining  9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8 1
}}
 
Como você pode notar, tanto '''node_01''' quanto '''node_03''' mineram para a primeira carteira. A terceira carteira não é usada para mineração neste exemplo. A razão é que receberá '''XMR''', por transferência, das restantes carteiras.
 
=Inicie as carteiras=
wallet_01:
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --trusted-daemon --wallet-file ~/testnet/wallet_01.bin --password '' --log-file ~/testnet/wallet_01.log
}}
 
wallet_02:
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --daemon-port 38081 --trusted-daemon --wallet-file ~/testnet/wallet_02.bin --password '' --log-file ~/testnet/wallet_02.log
}}
 
wallet_03:
{{console|body=
$ ##i##/opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --daemon-port 48081 --trusted-daemon --wallet-file ~/testnet/wallet_03.bin --password '' --log-file ~/testnet/wallet_03.log
}}
}}



Edição das 05h58min de 29 de abril de 2021

Status: Em construção
Progress: 70%
Last Update: Raphael Bastos 21:40, 26 Abril 2021 (BRST)


Responsável:
* Raphael Bastos


História

A Atomic Swap foi introduzida pela primeira vez por Tier Nolan nos fóruns BitcoinTalk em 2013[1]. Nolan delineou os princípios básicos para trocas de criptomoedas de cadeia cruzada usando transações simples de criptomoedas em diferentes tipos de blockchains .

Em setembro de 2017, as trocas atômicas chamaram a atenção da comunidade hacker quando o fundador do Litecoin, Charlie Lee anunciou a execução bem-sucedida de uma troca atômica entre litecoin e bitcoin no Twitter .

Em 2018 Lucas Soriano e sua equipe criou uma nova prova de conceito envolvendo Atomic Swap, provando que as trocas atômicas entre Grin[2] e Bitcoin eram possíveis. Em 2020 sua equipe nos abrilhantou com o novo conceito de Atomic Swap entre Monero[3] e Bitcoin. O objetivo do grupo é de conectar todas as blockchains existentes, e o foco do momento é o Monero pelo óbvio, a única criptomoeda com confiança dos seus usuários e completo anonimato dos valores transacionados.

Objetivos

  • Garantir que o software pode ser usado na mainnet[4] sem perda de fundos
  • Entender o melhor caso de uso para Atomic Swap entre Monero vs Bitcoin, e definir um produto que atenda ao referido caso de uso


Como funciona

swapCLI

swapCLI atua na função de Bob para trocar BTC por XMR. O comando principal é o buy-xmr que se conecta automaticamente a um serviço ASB.

ASB Service

ASB a abreviatura de Automated Swap Backend. O serviço atua como contraparte da swapCLI no papel de Alice. Ele fornece ao CLI uma cotação e a liquidez necessária para trocar BTC por XMR.[5]

Detalhes do funcionamento

Para entender melhor os diferentes componentes do ASB e swapCLI, aqui está um diagrama de componentes que mostra a configuração do ASB e da CLI usando a infraestrutura pública de Bitcoin e Monero:


Requisitos

   Atenção:

Nunca utilize o usuário ROOT para compilar e/ou executar nada deste artigo


Monero-wallet-cli

Compile o monero-wallet-cli no Linux

user $ git clone --recursive https://github.com/monero-project/monero
user $ sudo mv monero /opt
user $ cd /opt/monero ; git submodule sync && git submodule update
user $ make -j13
   Dica:

Também é possível executar o monerod em background, utilizando o parâmetro --detach


Crie o diretório ~/testnet:

user $ mkdir ~/testnet &&  cd  ~/testnet


Configuração dos nodes (monerod)

Inicie o primeiro node

O nó 01 ouvirá as conexões na porta 28080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 38080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_01. Vamos definir a mineração fixa com dificuldade em 100. Você pode alterá-la para o valor que quiser. Dessa forma, podemos manter os blocos de mineração mais rápido.

user $ DNS_PUBLIC=tcp://8.8.8.8 /opt/monero/build/Linux/master/release/bin/monerod --testnet  --no-igd --hide-my-port --data-dir ~/testnet/node_01 --p2p-bind-ip 127.0.0.1 --log-level 0 --add-exclusive-node 127.0.0.1:38080 --add-exclusive-node 127.0.0.1:48080  --fixed-difficulty 100


Inicie o segundo node

O nó 02 ouvirá conexões na porta 38080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 48080. Ele armazenará seu blockchain em ~/testnet/node_02. Definimos com a mesma dificuldade do primeiro nó.

user $ DNS_PUBLIC=tcp://8.8.8.8 /opt/monero/build/Linux/master/release/bin/monerod --testnet --p2p-bind-port 38080 --rpc-bind-port 38081 --zmq-rpc-bind-port 38082 --no-igd --hide-my-port  --log-level 0 --data-dir ~/testnet/node_02 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:48080 --fixed-difficulty 100


Inicie o terceiro node

O nó ouvirá as conexões na porta 48080 e se conectará aos outros dois nós, ou seja, aqueles nas portas 28080 e 38080. Ele armazenará seu blockchain em ~/testnet/node_03. Definimos com a mesma dificuldade do primeiro e segundo nó.

user $ DNS_PUBLIC=tcp://8.8.8.8 /opt/monero/build/Linux/master/release/bin/monerod --testnet --p2p-bind-port 48080 --rpc-bind-port 48081 --zmq-rpc-bind-port 48082 --no-igd --hide-my-port  --log-level 0 --data-dir ~/testnet/node_03 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:38080 --fixed-difficulty 100


Ex:


Crie novas carteiras na stagenet

Cada um dos nós terá uma carteira correspondente. Assim, criaremos as carteiras com os nomes wallet_01.bin, wallet_02.bin e wallet_03.bin. Esses arquivos estarão no diretório ~/testnet

Para a rede testnet, opte inicialmente por ter endereços fixos para cada carteira e nenhuma senha. A razão é que é muito mais fácil trabalhar com essas carteiras testnet durante a fase de entendimento da tecnologia.

Execute os seguintes comandos para criar três carteiras sem senha.

wallet_01.bin

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_01.bin  --restore-deterministic-wallet --electrum-seed="sequence atlas unveil summon pebbles tuesday beer rudely snake rockets different fuselage woven tagged bested dented vegan hover rapid fawns obvious muppet randomly seasons randomly" --password "" --log-file ~/testnet/wallet_01.log;

Endereço e semente resultantes:

9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8
sequence atlas unveil summon pebbles tuesday beer rudely snake rockets different fuselage woven tagged bested dented vegan hover rapid fawns obvious muppet randomly seasons randomly

wallet_02.bin

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_02.bin  --restore-deterministic-wallet --electrum-seed="deftly large tirade gumball android leech sidekick opened iguana voice gels focus poaching itches network espionage much jailed vaults winter oatmeal eleven science siren winter" --password "" --log-file ~/testnet/wallet_02.log;

Endereço e semente resultantes:

9wq792k9sxVZiLn66S3Qzv8QfmtcwkdXgM5cWGsXAPxoQeMQ79md51PLPCijvzk1iHbuHi91pws5B7iajTX9KTtJ4bh2tCh
deftly large tirade gumball android leech sidekick opened iguana voice gels focus poaching itches network espionage much jailed vaults winter oatmeal eleven science siren winter

wallet_03.bin

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --generate-new-wallet ~/testnet/wallet_03.bin  --restore-deterministic-wallet --electrum-seed="upstairs arsenic adjust emulate karate efficient demonstrate weekday kangaroo yoga huts seventh goes heron sleepless fungal tweezers zigzags maps hedgehog hoax foyer jury knife karate" --password "" --log-file ~/testnet/wallet_03.log;

Endereço e semente resultantes:

A2rgGdM78JEQcxEUsi761WbnJWsFRCwh1PkiGtGnUUcJTGenfCr5WEtdoXezutmPiQMsaM4zJbpdH5PMjkCt7QrXAhV8wDB
upstairs arsenic adjust emulate karate efficient demonstrate weekday kangaroo yoga huts seventh goes heron sleepless fungal tweezers zigzags maps hedgehog hoax foyer jury knife karate


Após criar, surgirá uma imagem parecida com o exemplo abaixo. Pode encerrar as carteiras, iremos falar mais delas posteriormente:


Comece a minerar

Como você minera é totalmente opcional. Você pode minerar apenas a primeira carteira e manter as outras duas vazias por enquanto, ou minerar em dois nós, ou em todos os três.

Utilize os seguintes comandos para minerar as duas primeiras carteiras:

Digite no minerd do node_01 (mineração da primeira carteira):

start_mining  9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8 1

Digite no minerd do node_02 (mineração da segunda carteira):

start_mining  9wq792k9sxVZiLn66S3Qzv8QfmtcwkdXgM5cWGsXAPxoQeMQ79md51PLPCijvzk1iHbuHi91pws5B7iajTX9KTtJ4bh2tCh 1

Digite no minerd do node_03 (mineração da primeira carteira):

start_mining  9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8 1

Como você pode notar, tanto node_01 quanto node_03 mineram para a primeira carteira. A terceira carteira não é usada para mineração neste exemplo. A razão é que receberá XMR, por transferência, das restantes carteiras.

Inicie as carteiras

wallet_01:

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --trusted-daemon --wallet-file ~/testnet/wallet_01.bin --password '' --log-file ~/testnet/wallet_01.log

wallet_02:

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --daemon-port 38081 --trusted-daemon --wallet-file ~/testnet/wallet_02.bin --password '' --log-file ~/testnet/wallet_02.log

wallet_03:

user $ /opt/monero/build/Linux/master/release/bin/monero-wallet-cli --testnet --daemon-port 48081 --trusted-daemon --wallet-file ~/testnet/wallet_03.bin --password '' --log-file ~/testnet/wallet_03.log



Referências:

Cookies nos ajudam a entregar nossos serviços. Ao usar nossos serviços, você concorda com o uso de cookies.