photo
+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: Transações em Ethereum

  1. #1 Fechar a publicação
    Senior Member
    Data de afiliação
    Aug 2020
    Postagens
    350
    Obrigado
    6
    Agradecimentos 74 Tempos em 75 Postagens
    AssinarAssinar
    subscritar: 1

    Transações em Ethereum

    Objetivo

    Transação é a forma como o mundo externo interage com a rede Ethereum. A transação é usada quando desejamos modificar ou atualizar o estado armazenado na rede Ethereum. Neste artigo, iremos primeiro fornecer alguns conceitos básicos sobre Ethereum. Isso constrói a base necessária para as próximas peças. Em seguida, examinamos a estrutura de uma transação Ethereum genérica. E depois disso, estamos prontos para explorar os três tipos de transações, cada uma para fins diferentes, usando a transação Ethereum. Alguns conceitos básicos sobre contas e contratos Ethereum é uma implementação de blockchain baseada em conta. Existem dois tipos de conta: Conta de propriedade externa e Conta de contrato. Vamos apresentá-los de maneira lógica. Conta de propriedade externa (EOA) Podemos primeiro considerar EOA como um usuário individual no mundo externo. Um usuário na rede Ethereum é representado por um endereço de 20 bytes (160 bits). A representação é feita segurando uma chave privada que finalmente deriva o endereço de 20 bytes. Dentro de uma rede Ethereum circula uma moeda nativa: o éter. Além de uma moeda nativa, o éter é usado principalmente como a taxa de transação ou taxa de serviço (chamada de gás em Ethereum) quando a rede Ethereum está processando a transação. Cada EOA contém uma quantidade de éter como seu estado. Quando um EOA inicia uma transação, o gás é especificado e então gasto na rede Ethereum.
    Continuaremos vendo elementos de gás quando nos aprofundarmos na parte da transação. Contrato Antes de entrarmos na conta do contrato, vamos dar uma olhada no contrato primeiro. Contrato é o recurso de “contrato inteligente” na rede Ethereum, onde a lógica de negócios é implementada. O contrato começa como uma linguagem de codificação compreensível para humanos (Solidity é a mais comum no Ethereum). Este código é compilado em um código compreensível por máquina, chamado bytecode, que deve ser implantado em uma rede Ethereum. Dentro do código do contrato, existem funções. Essas funções definem a lógica de negócios real e serão chamadas e executadas uma vez “chamadas” após a implantação do contrato. Usaremos um contrato de amostra chamado SimpleStorage neste artigo para demonstração. Conta do Contrato O bytecode mencionado antes ainda não está acessível até que seja implantado em uma rede Ethereum. A implantação de um bytecode de contrato é feita por meio de uma transação (examinaremos isso mais tarde). Uma conta de contrato é criada correspondente a um contrato implantado. A conta do contrato é identificada por um endereço de contrato, novamente um endereço de 20 bytes. Este é o endereço quando interagimos com esta conta implantada. Como qualquer EOA, a conta de contrato também pode manter éteres quando apropriado para a lógica de negócios. Itens Omitidos Como este artigo é principalmente sobre transações, omitimos alguns conceitos importantes sobre o próprio Ethereum, como a comunicação ponto a ponto e mineração. Assumimos que a transação é propagada corretamente na rede Ethereum, extraída com sucesso e então incluída em um novo bloco. Ferramentas a serem usada.
    Aqui estão algumas ferramentas que eu uso aqui para demonstrar as transações Ethereum.
    • Qualquer compilador funciona bem. Aqui eu uso REMIX, uma ferramenta IDE online para contrato Ethereum. Eu apenas tiro o bytecode de um contrato de amostra.
    • Um simulador Ethereum também é usado. Isso acelera o processo de configuração de uma rede privada e as transações são minadas quase que imediatamente. Aqui estou usando o Ganache-CLI.
    • Para interagir com a rede Ethereum, uso o cliente Go Ethereum (geth) para acessar o simulador Ethereum.

    Transação Ethereum Embora as transações sejam usadas para finalidades diferentes, a estrutura da transação é a mesma. Vamos primeiro explorar o que está dentro. Estrutura de Transação De: O remetente da transação. É um endereço de 20 bytes que representa a conta que inicia esta transação. Para: O destinatário desta transação. É também um endereço de 20 bytes. Depende do uso, pode ser outro EOA, uma conta de contrato ou apenas deixado em branco. Valor: O montante do fundo em wei (1 éter = 10¹⁸ weis) a ser transferido de “De” para “Para”. Se “Para” for um EOA, é simplesmente uma transferência de fundos. Se “Para” for um Endereço do Contrato, é o valor do fundo repassado ao contrato implantado. O contrato é codificado de forma que possa aceitar fundos. Dados / entrada: Este campo de dados é principalmente para atividades relacionadas ao contrato. Para nova implantação de contrato, é o bytecode e os argumentos codificados. Para a execução da função do contrato, ele contém a assinatura da função e os argumentos codificados. É deixado vazio na transferência de fundos. Preço do Gás e Limite do Gás: Ambos estão relacionados ao custo de processamento desta transação. Cada etapa de processamento de uma transação realizada pelo minerador tem uma unidade de gás predefinida (por exemplo, “sload” que obtém dados do armazenamento permanente custa 20 unidades de gás). Preço do gás é a quantidade (em wei) por unidade de gás. Esta é a transação de preço unitário que o remetente está disposto a pagar. Limite de gás é o máximo de unidades de gás gastas para esta transação.
    A unidade máxima de gás gasta por sua transação não excederá o Limite de Gás, como uma proteção em caso de qualquer discrepância no processamento da transação. Assinando uma transação Como estamos usando geth, este cliente Ethereum cuidará do processo de assinatura em seu nome. “Assinar” um objeto de transação é o processo de gerar uma assinatura nele usando a chave privada do remetente da transação. A transação assinada é então tratada por geth em todas as etapas a seguir até que a transação assinada seja incluída em um bloco recém-extraído. Enviando transação usando Geth Existem duas maneiras de enviar transações através do RPC: eth_sendTransaction e eth_sendRawTransaction, correspondendo ao comando que podemos usar em Geth: eth.sendTransaction () e eth.sendRawTransaction (). eth.sendTransaction (): Para enviar um objeto de transação. Geth ajudará a assinar a transação (assumindo que geth tenha controle sobre a chave privada) e realizará toda a serialização antes de enviar para a rede Ethereum. eth.sendRawTransaction (): Para enviar uma transação assinada serializada, que é composta de acordo com a estrutura necessária. Isso geralmente é usado quando a chave privada não é manipulada localmente no geth e a assinatura é feita fora do cliente Geth. Para simplificar, estamos usando eth.sendTransaction () para todo este artigo.
    Três Tipos de Transação A transação genérica mencionada acima é usada para os três propósitos diferentes.
    • Transferência de fundos entre EOA
    • Implementar um contrato na rede Ethereum
    • Executar uma função em um contrato implantado Transferência de fundos entre EOA Esta transação é usada quando um EOA está transferindo fundos para outro EOA.

    Name:  Capturar 1.PNG
Views: 28
Size:  192.3 KB

    A transação se parece com isto.

    Name:  Capturar  2.PNG
Views: 28
Size:  25.9 KB

    Nesta demonstração, estamos transferindo 10 éteres de contas [0] para contas [1].


    Name:  Capturar 3.PNG
Views: 32
Size:  64.9 KB

    Nota:
    • Aqui, estamos usando web3.fromWei e web3.toWei para converter entre ether e wei para fins de demonstração. Lembre-se que o valor da transação está sempre em wei.
    • Algum gás é gasto ao enviar esta transação das contas [0]. O saldo das contas [0] é um pouco inferior a 90 éteres. A diferença é o gás gasto para lidar com essa transação. Implantar um contrato na rede Ethereum Nesta parte, implantaremos um contrato compilado (ou seja, o bytecode) em uma rede Ethereum. No Ethereum, a implantação do contrato é feita por meio de uma transação.


    Name:  Capturar 4.PNG
Views: 31
Size:  179.3 KB

    A transação se parece com isto.

    Name:  Capturar 5.PNG
Views: 30
Size:  31.0 KB


    Aqui, estamos usando o contrato SimpleStorage. O contrato é assim.

    Name:  Capturar 6.PNG
Views: 51
Size:  8.7 KB

    Como de costume, vemos que um hash de transação é retornado. Com esse hash de transação, podemos examinar os detalhes da transação usando eth. getTransaction () e eth.getTransactionReceipt ().
    Aqui vemos
    • Na transação, o to é deixado vazio (‘0x0’ é mostrado).

    • Na entrada, colocamos apenas o bytecode. É porque nosso contrato SimpleStorage não tem um construtor que requer argumentos. Se forem necessários argumentos no construtor, eles serão codificados de acordo com o tipo e acrescentados após o bytecode. Veremos como a codificação é feita quando chamarmos a função set () na próxima parte.

    • O endereço do contrato é encontrado no recibo da transação. Vamos usá-lo na próxima parte.
    • O limite de gás padrão (gás) é 90.000 gás. Se você não especificar o gás, encontrará “sem gás”, pois é necessário mais de 90.000 gás para processar esta transação. Portanto, especificamos 200.000 gás para esta transação.
    • Acontece que o processamento da transação leva apenas 112.213 gás. O restante é devolvido ao remetente da transação. Executar uma função em um contrato implantado Depois que um contrato é implantado, um EOA pode executar funções definidas neste contrato. Novamente, é implementado enviando uma transação Ethereum.

    Antes de realizarmos sendTransaction () para executar uma função definida no contrato, vamos revisar o mecanismo de como identificar a função. No código Solidity acima, duas funções são definidas: get () e set (uint). Quando o código do contrato é compilado, essas funções são processadas por meio de uma função hashing (keccak256, implementada como sha3 na biblioteca web3) e os primeiros quatro bytes são retirados como os seletores de função. Aqui está como extraímos a seleção de função dessas duas funções.

    Resumo Neste artigo, examinamos os três tipos de interação mais comuns com a rede Ethereum: envio de éteres entre contas, implantação de um contrato e execução de funções de contrato. Todos eles podem ser feitos através do envio de transações para a rede Ethereum, com a devida construção de parâmetros de transação dentro. Essa não é a única maneira de lidar com a implantação do contrato e a execução da função, pois também podemos usar a eth.contract () e a Interface Binária do Aplicativo (abi) para fazer um trabalho semelhante. No entanto, usar eth.sendTransaction () nos ajuda a entender o mecanismo por trás.

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to socrates980 For This Useful Post:

    Paulo_st (10-11-2020)

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts