

O AWS Blockchain Templates foi descontinuado em 30 de abril de 2019. Nenhuma atualização adicional será feita para este serviço ou nesta documentação de suporte. Para obter a melhor experiência de Managed Blockchain AWS, recomendamos que você use o [Amazon Managed Blockchain (AMB)](https://aws.amazon.com/managed-blockchain/). Para saber mais sobre como começar a usar o Amazon Managed Blockchain, veja o nosso [workshop sobre o Hyperledger Fabric](https://catalog.us-east-1.prod.workshops.aws/workshops/008da2cb-8454-42d0-877b-bc290bff7fcf/en-US) ou o nosso [blog sobre a implantação de um nó Ethereum](https://aws.amazon.com/blogs/database/deploy-an-ethereum-node-on-amazon-managed-blockchain/). Se você tiver dúvidas sobre o AMB ou precisar de mais suporte, [entre em contato com Suporte](https://console.aws.amazon.com/support/home#/case/create?issueType=technical) nossa equipe de AWS contas.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando o AWS Blockchain Template para Ethereum
<a name="blockchain-templates-ethereum"></a>

O Ethereum é uma estrutura de blockchain que executa contratos inteligentes usando o Solidity, uma linguagem específica do Ethereum. O Homestead é o lançamento mais recente do Ethereum. Para obter mais informações, consulte a [documentação do Ethereum Homestead](http://www.ethdocs.org/en/latest/) e a documentação do [Solidity](https://solidity.readthedocs.io/en/v0.4.21/#).

## Links para execução
<a name="blockchain-ethereum-launch"></a>

Consulte [Getting Started with AWS Blockchain Templates](https://aws.amazon.com/blockchain/templates/getting-started/) para obter links para lançamento CloudFormation em regiões específicas usando os modelos Ethereum.

## Opções do Ethereum
<a name="blockchain-ethereum-options"></a>

Ao configurar a rede Ethereum usando o modelo, você faz escolhas que determinam os requisitos subsequentes:
+ [Escolher a plataforma do contêiner](#blockchain-ethereum-platform)
+ [Escolher uma rede Ethereum Privada ou Pública](#blockchain-private-public)
+ [Alterar as contas padrão e a frase mnemônica](#blockchain-ethereum-mnemonic)

### Escolher a plataforma do contêiner
<a name="blockchain-ethereum-platform"></a>

O AWS Blockchain Templates usa contêineres do Docker armazenados no Amazon ECR para implementar o software de blockchain. O AWS Blockchain Template para o Ethereum oferece duas opções para a **Plataforma Container **:
+ **ecs** — Especifica que o Ethereum é executado em um cluster Amazon ECS de instâncias da Amazon. EC2
+ **docker-local** — Especifica que o Ethereum é executado em uma única instância. EC2

#### Usando a Plataforma de Contêineres do Amazon ECS
<a name="blockchain-ethereum-ecs"></a>

Com o Amazon ECS, você cria sua rede Ethereum em um cluster ECS composto por várias EC2 instâncias, com um Application Load Balancer e recursos relacionados. Para mais informações sobre como usar a configuração do Amazon ECS, consulte o tutorial [Conceitos básicos do AWS Blockchain Templates](blockchain-templates-getting-started.md).

O diagrama a seguir descreve uma rede Ethereum criada em usando um modelo com a opção de plataforma de contêiner ECS:

![\[AWS diagram showing VPC with public and private subnets, load balancers, and Ethereum nodes in ECS containers.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ethereum-ecs-arch.png)


#### Usando a plataforma Docker-Local
<a name="blockchain-ethereum-docker-local"></a>

Como alternativa, você pode lançar contêineres Ethereum em uma única EC2 instância da Amazon. Todos os contêineres são executados em uma única EC2 instância. Esta é uma configuração simplificada.

O diagrama a seguir descreve uma rede Ethereum criada usando o template com a opção de plataforma de contêiner docker-local:

![\[Diagram of Ethereum network on AWS with VPC, EC2 instance, containers, and ECR registry.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ethereum-docker-local-arch.png)


### Escolher uma rede Ethereum Privada ou Pública
<a name="blockchain-private-public"></a>

Escolher um valor para a **Ethereum Network ID** diferente de 1 a 4 cria nós privados no Ethereum que são executados dentro de uma rede que você define, usando os parâmetros de rede privada que você especifica.

Quando você escolhe um valor para a **Ethereum Network ID** de 1 a 4, os nós do Ethereum que você cria são unidos à rede pública do Ethereum. Você pode ignorar as configurações da rede privada e seus respectivos padrões. Se você optar por unir os nós de Ethereum à rede pública de Ethereum, verifique se os serviços apropriados na sua rede podem ser acessados pela Internet.

### Alterar as contas padrão e a frase mnemônica
<a name="blockchain-ethereum-mnemonic"></a>

Uma frase mnemônica é um conjunto aleatório de palavras que você pode usar para gerar carteiras Ethereum (ou seja, pares de private/public chaves) para contas associadas em qualquer rede. A frase mnemônica pode ser usada para acessar Ether para contas associadas. Criamos um mnemônico padrão associado às contas padrão que o modelo de Ethereum usa.

**Atenção**  
Use as contas padrão e a frase mnemônica associada somente para fins de teste. Não envie Ether real usando o conjunto padrão de contas, pois qualquer pessoa com acesso à frase mnemônica pode acessar ou roubar o Ether das contas. Em vez disso, especifique contas personalizadas para fins de produção. A frase mnemônica associada à conta padrão é `outdoor father modify clever trophy abandon vital feel portion grit evolve twist`.

## Pré-requisitos
<a name="blockchain-ethereum-prereq"></a>

Quando você configura a sua rede Ethereum usando o AWS Blockchain Template para o Ethereum, os requisitos mínimos listados abaixo precisam ser atendidos. O modelo exige os AWS componentes listados para cada uma das seguintes categorias:

**Topics**
+ [Pré-requisitos para acessar recursos do Ethereum](#blockchain-ethereum-prereq-access)
+ [Pré-requisitos IAM](#blockchain-ethereum-prereq-iam)
+ [Pré-requisitos do grupo de segurança](#blockchain-ethereum-prereq-sec)
+ [Pré-requisitos do VPC](#blockchain-ethereum-prereq-vpc)
+ [Exemplo de permissões do IAM para o perfil da EC2 instância e a função do ECS](#blockchain-ethereum-iam-examples)

### Pré-requisitos para acessar recursos do Ethereum
<a name="blockchain-ethereum-prereq-access"></a>


| Pré-requisito | Para plataforma do ECS | Para Docker-Local | 
| --- | --- | --- | 
|  Um par de EC2 chaves da Amazon que você pode usar para acessar EC2 instâncias. A chave precisa existir na mesma Região que o cluster do ECS e outros recursos.  |  ✔  |  ✔  | 
|  Um componente voltado para a Internet, como um bastion host ou um balanceador de carga, com um endereço interno pelo qual o tráfego é permitido no Application Load Balancer. Isso é necessário com a plataforma do ECS porque o modelo cria um balanceador de carga interno por motivos de segurança. Isso é necessário com a plataforma docker-local quando a EC2 instância está em uma sub-rede privada, o que recomendamos. Para obter informações sobre como configurar um bastion host, consulte [Criar um bastion host](blockchain-template-getting-started-prerequisites.md#blockchain-templates-bastion-host).  |  ✔  |  ✔ (com sub-rede privada)  | 

### Pré-requisitos IAM
<a name="blockchain-ethereum-prereq-iam"></a>


| Pré-requisito | Para plataforma do ECS | Para Docker-Local | 
| --- | --- | --- | 
|  Uma enteidade principal do IAM; (usuário ou grupo) com permissões para trabalhar com todos os serviços relacionados.  |  ✔  |  ✔  | 
|  Um perfil de EC2 instância da Amazon com permissões apropriadas para que as EC2 instâncias interajam com outros serviços. Para obter mais informações, consulte [To create an EC2 instance profile](blockchain-template-getting-started-prerequisites.md#create-ec2-role).   |  ✔  |  ✔  | 
|  Uma função do perfil do IAM, com permissões para que o Amazon ECS interaja com outros serviços. Para obter mais informações, consulte [Criar a função e as permissões do ECS](#blockchain-ethereum-ecs-role).  |  ✔  |    | 

### Pré-requisitos do grupo de segurança
<a name="blockchain-ethereum-prereq-sec"></a>


| Pré-requisito | Para plataforma do ECS | Para Docker-Local | 
| --- | --- | --- | 
| Um grupo de segurança para EC2 instâncias, com os seguintes requisitos: | ✔ |  ✔  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  | ✔ |  ✔  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  | ✔ |  ✔  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html) | ✔ |  | 
| [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html) |  | ✔ | 
|  Um grupo de segurança para o Application Load Balancer, com os seguintes requisitos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/blockchain-templates-ethereum.html)  |  ✔  |    | 

### Pré-requisitos do VPC
<a name="blockchain-ethereum-prereq-vpc"></a>


| Pré-requisito | Para plataforma do ECS | Para Docker-Local | 
| --- | --- | --- | 
|  Um endereço IP Elástico que é usado para acessar os serviços do Ethereum.  |  ✔  |  ✔  | 
|  Uma sub-rede para executar EC2 instâncias. Recomendamos muito uma sub-rede privada.  |  ✔  |  ✔  | 
|  Duas sub-redes acessíveis ao público geral. Cada sub-rede deve estar em zonas de disponibilidade diferentes uma da outra, com uma na mesma zona de disponibilidade da sub-rede para EC2 instâncias.  |  ✔  |    | 

### Exemplo de permissões do IAM para o perfil da EC2 instância e a função do ECS
<a name="blockchain-ethereum-iam-examples"></a>

Você especifica um ARN de perfil de EC2 instância como um dos parâmetros ao usar o modelo. Se você usar a plataforma de contêiner do ECS, também especificará um ARN de função do ECS. As políticas de permissões anexadas a essas funções permitem que os recursos e as instâncias da AWS no cluster interajam com os outros recursos da AWS. Para obter mais informações, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*. Use as instruções e os procedimentos de política abaixo como ponto de partida para criar permissões.

#### Exemplo de política de permissões para o perfil da EC2 instância
<a name="blockchain-ethereum-ec2-instance"></a>

A política de permissões a seguir demonstra as ações permitidas para o perfil da EC2 instância quando você escolhe a plataforma de contêiner ECS. As mesmas instruções de política podem ser usadas em uma plataforma de contêiner local do Docker, com chaves de contexto `ecs` removidas para limitar o acesso.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:CreateCluster",
                "ecs:DeregisterContainerInstance",
                "ecs:DiscoverPollEndpoint",
                "ecs:Poll",
                "ecs:RegisterContainerInstance",
                "ecs:StartTelemetrySession",
                "ecs:Submit*",
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "*"
        }
    ]
}
```

#### Criar a função e as permissões do ECS
<a name="blockchain-ethereum-ecs-role"></a>

Para as permissões associadas à função do ECS, recomendamos que você comece com a política de EC2 ContainerServiceRole permissões da **Amazon**. Use o procedimento a seguir para criar uma função e anexar esta política de permissões. Use o console do IAM para ver a maioria das up-to-date permissões nessa política.

**Para criar os perfis do IAM do Amazon ECS**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Funções** e **Criar função**.

1. Em **Select type of trusted entity** (Selecionar tipo de entidade confiável), escolha **AWS service** (Produto da AWS).

1. Em **Choose the service that will use this role** (Escolher o serviço que usará esta função), escolha **Elastic Container Service**.

1. Em **Select your use case (Selecionar seu caso de uso)**, escolha **Elastic Container Service**, **Next:Permissions (Próximo: permissões)**.  
![\[AWS console interface for creating a role, with Elastic Container Service selected as the use case.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role.png)

1. Em **Política de permissões**, deixe a política padrão (**Amazon EC2 ContainerServiceRole**) selecionada e escolha **Next:Review**.

1. Em **Nome da função**, insira um valor que ajude a identificar a função, como *ECSRoleForEthereum*. Em **Role Description (Descrição da função)**, digite um resumo breve. Anote o nome da função para mais tarde.

1. Selecione **Criar perfil**.

1. Na lista, selecione a função que você acabou de criar. Caso sua conta tenha várias funções, você pode pesquisar o nome da função.  
![\[AWSIAM console showing a role named "ECSRoleForEtherum" with its description.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role-list.png)

1. Copie o valor de **Role ARN (ARN da função)** e salve-o para copiá-lo novamente depois. Você precisará dele quando for criar a rede de Ethereum.  
![\[AWSIAM role summary page showing role ARN, description, and attached policies.\]](http://docs.aws.amazon.com/pt_br/blockchain-templates/latest/developerguide/images/ecs-role-arn.png)

## Conectando-se aos recursos do Ethereum
<a name="blockchain-ethereum-connecting"></a>

Depois que a pilha raiz criada com o modelo mostrar **CREATE\$1COMPLETE**, você poderá se conectar aos recursos do Ethereum usando o console. CloudFormation O modo como você se conecta depende da plataforma de contêiner escolhida, ECS ou docker-local:
+ **ECS** — A aba **Saída** da pilha raiz fornece links para serviços em execução no Application Load Balancer. Eles não URLs estão diretamente acessíveis por motivos de segurança. Para se conectar, é possível configurar e usar um *bastion host* para conexões de proxy com eles. Para obter mais informações, consulte [Conexões de proxy usando um Bastion Host](#ethereum-create-bastion-host) abaixo.
+ **docker-local** — Você se conecta usando o endereço IP da EC2 instância que hospeda os serviços Ethereum, conforme listado abaixo. Use o EC2 console para encontrar *ec2-IP-address* a instância criada pelo modelo.
  + **EthStats**—Use http://*ec2-IP-address*
  + **EthExplorer**—Use http: //:8080 *ec2-IP-address*
  + **EthJsonRpc**— Use http: //:8545 *ec2-IP-address*

  Se você especificou uma sub-rede pública para a **ID da Sub-rede da Ethereum Network ** (**Lista de sub-redes de VPC a serem usadas** dentro do modelo), será possível conectar-se diretamente. Seu cliente deve ser uma fonte confiável de tráfego de entrada para SSH (porta 22), bem como as portas listadas. Isso é determinado pelo **grupo de EC2 segurança** que você especificou usando o modelo de blockchain da AWS para Ethereum.

  Se você especificou uma sub-rede privada, é possível configurar e usar um *bastion host* para conexões de proxy com esses endereços. Para obter mais informações, consulte [Conexões de proxy usando um Bastion Host](#ethereum-create-bastion-host) abaixo.

### Conexões de proxy usando um Bastion Host
<a name="ethereum-create-bastion-host"></a>

Com algumas configurações, os serviços do Ethereum podem não estar disponíveis publicamente. Nesses casos, você pode se conectar aos recursos do Ethereum por meio de um *bastion host*. Para obter mais informações sobre bastion hosts, consulte [Arquitetura de Bastion Host do Linux](https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html) no *Guia de início rápido de Bastion Hosts do Linux*.

O bastion host é uma EC2 instância. Certifique-se de cumprir os seguintes requisitos:
+ A EC2 instância do bastion host está em uma sub-rede pública com atribuição automática de IP público habilitada e que tem um gateway de internet. 
+ O bastion host tem o par de chaves que permite conexões ssh.
+ O bastion host está associado a um grupo de segurança que permite o tráfego SSH de entrada dos clientes que se conectam.
+ O grupo de segurança atribuído aos hosts Ethereum (por exemplo, o Application Load Balancer se o ECS for a plataforma de contêiner ou a instância do EC2 host se docker-local for a plataforma de contêiner) permite tráfego de entrada em todas as portas a partir de fontes dentro da VPC.

Com um bastion host configurado, certifique-se de que os clientes que se conectam usem o bastion host como proxy. O exemplo a seguir demonstra a configuração de uma conexão proxy usando o Mac OS. *BastionIP*Substitua pelo endereço IP da EC2 instância do bastion host e pelo arquivo *MySshKey.pem* de key pair que você copiou para o bastion host.

Na linha de comando, digite o seguinte:

```
ssh -i mySshKey.pem  ec2-user@BastionIP -D 9001
```

Isto configura o encaminhamento de portas para a porta 9001 na máquina local para o bastion host.

Em seguida, configure seu navegador ou sistema para usar o proxy SOCKS para `localhost:9001`. Por exemplo, ao usar o Mac OS, selecione **System Preferences (Preferências do sistema)**, **Network (Rede)**, **Advanced (Avançado)**, selecione **SOCKS proxy (Proxy SOCKS)** e digite **localhost:9001**.

Usando o FoxyProxy Padrão com o Chrome, selecione **Mais ferramentas**, **extensões**. Em **FoxyProxy Padrão**, selecione **Detalhes**, **Opções de extensão** e **Adicionar novo proxy**. Selecione **Manual Proxy Configuration (Configuração manual de proxy)**. Em **Host or IP Address (Host ou endereço IP)**, digite **localhost** e para **Port (Porta)**, digite **9001**. Selecione **SOCKS Proxy?**, **Save (Salvar)**.

Agora você deve poder conectar-se aos endereços de host dos endereços Ethereum listados na saída do modelo.