Nos mercados tradicionais de comércio eletrônico, como Amazon e eBay, uma autoridade central facilita as transações entre compradores e vendedores. Esta autoridade central controla as transações, mantém as listas de produtos e gere a resolução de litígios. Embora este modelo centralizado tenha as suas vantagens, também tem várias desvantagens, incluindo o risco de censura, taxas elevadas e a confiança na confiança.
Por outro lado, um mercado descentralizado aproveita a tecnologia blockchain para permitir transações peer-to-peer sem intermediários. Elimina a necessidade de confiança, pois as transações são transparentes e verificáveis por todos os participantes do blockchain. Exemplos de mercados descentralizados incluem OpenBazaar e Origin Protocol.
Remix IDE (Ambiente de Desenvolvimento Integrado) é uma ferramenta poderosa e de código aberto projetada especificamente para o desenvolvimento de contratos inteligentes Ethereum. Ele é executado diretamente no seu navegador, então você não precisa instalar nada no seu computador.
Você pode acessar o Remix IDE em https://remix.ethereum.org. Ao abrir o Remix em seu navegador, você encontrará três painéis:
Painel Esquerdo: É aqui que você pode criar, importar e gerenciar seus arquivos do Solidity. Também inclui vários plug-ins para compilar, testar, depurar e implantar seus contratos.
Painel Central: Este é o seu editor de código. Aqui você escreverá e editará seu código do Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar seus contratos, implantá-los na rede Ethereum (seja em uma rede Ethereum real ou em uma simulação de VM JavaScript) e interagir com seus contratos implantados.
Nesta parte, vamos escrever nosso primeiro contrato Solidity. Este contrato representará um “Item” básico em nosso mercado.
Para começar, crie um novo arquivo no Remix clicando no segundo ícone da parte superior do painel esquerdo (o ícone do arquivo). Uma nova caixa de diálogo aparecerá no painel central. Digite Item.sol
como nome do arquivo e clique em “OK”.
Solidez
// Identificador de licença SPDX: solidez do pragma MIT
^0.8.6;
contract Item {
// Define um evento que será disparado quando um novo item for criado
event NewItem(uint itemId, string itemName, uint itemPrice);
// Cada item possui um id, um nome e um preço
struct ItemStruct {
string name;
uint price;
}
// Array para armazenar todos os itens
ItemStruct[] public items;
// Função para criar um novo item
function createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
Identificador de licença SPDX: Esta é uma forma padrão de expressar a licença do contrato. A linha // SPDX-License-Identifier: MIT
indica que nosso contrato usa a licença permissiva do MIT.
Diretiva Pragma: pragma solidity ^0.8.6;
especifica que o contrato foi escrito no Solidity versão 0.8.6. O símbolo ^
significa que também será compatível com quaisquer versões mais recentes até, mas não incluindo, a versão 0.9.0.
Definição do contrato: contract Item {...}
define um novo contrato chamado Item
. É aqui que escrevemos as variáveis de estado e funções do contrato.
Definição de evento: event NewItem(uint itemId, string itemName, uint itemPrice);
define um evento que podemos emitir sempre que um novo item for criado. Os eventos são uma forma de os contratos inteligentes registrarem atividades que partes externas podem ouvir.
Definição de estrutura: struct ItemStruct {...}
define um novo tipo de dados ItemStruct
, que representa um Item com um name
e um price
.
Variável de Estado: ItemStruct[] public items;
declara uma variável de estado items
que contém uma matriz de ItemStruct
s. A palavra-chave public
cria automaticamente uma função getter que permite a qualquer pessoa acessar a lista de itens.
Definição de função: function createItem(string memory _name, uint _price) public {...}
define uma função pública que qualquer pessoa pode chamar para criar um novo item. A função recebe um nome e um preço, cria um novo ItemStruct
, adiciona-o ao array items
e emite um evento NewItem
.
Para compilar este contrato, vá ao painel direito e clique no terceiro ícone a partir do topo (o logotipo do Solidity). Aqui você pode compilar o contrato. Clique no botão “Compile” e se não houver erros seu contrato será compilado com sucesso.
IPFS: O InterPlanetary File System (IPFS) é um protocolo projetado para criar uma web permanente e descentralizada. É como um único enxame de BitTorrent, trocando objetos dentro de um repositório Git.
Swarm: Swarm é uma plataforma de armazenamento distribuído e serviço de distribuição de conteúdo nativo da pilha Ethereum web3. Ele permite que uma rede de pares armazene e distribua dados.
Ao compilar um contrato, o compilador Solidity gera um arquivo JSON contendo sua Application Binary Interface (ABI) e seu bytecode, entre outras informações. Isso é chamado de metadados do contrato. Armazenar esses metadados em uma rede de armazenamento descentralizada garante que estejam permanentemente disponíveis e pode ser útil para verificar o código-fonte do contrato.
No entanto, para o seu propósito de aprendizado e se você não planeja verificar o contrato no Etherscan ou qualquer outro explorador de blocos, você pode escolher Swarm ou IPFS, ou pode simplesmente ignorá-lo e passar para as próximas etapas do seu aprendizado. Lembre-se de que o foco principal neste estágio é entender como redigir, compilar e implantar o contrato.
Nos mercados tradicionais de comércio eletrônico, como Amazon e eBay, uma autoridade central facilita as transações entre compradores e vendedores. Esta autoridade central controla as transações, mantém as listas de produtos e gere a resolução de litígios. Embora este modelo centralizado tenha as suas vantagens, também tem várias desvantagens, incluindo o risco de censura, taxas elevadas e a confiança na confiança.
Por outro lado, um mercado descentralizado aproveita a tecnologia blockchain para permitir transações peer-to-peer sem intermediários. Elimina a necessidade de confiança, pois as transações são transparentes e verificáveis por todos os participantes do blockchain. Exemplos de mercados descentralizados incluem OpenBazaar e Origin Protocol.
Remix IDE (Ambiente de Desenvolvimento Integrado) é uma ferramenta poderosa e de código aberto projetada especificamente para o desenvolvimento de contratos inteligentes Ethereum. Ele é executado diretamente no seu navegador, então você não precisa instalar nada no seu computador.
Você pode acessar o Remix IDE em https://remix.ethereum.org. Ao abrir o Remix em seu navegador, você encontrará três painéis:
Painel Esquerdo: É aqui que você pode criar, importar e gerenciar seus arquivos do Solidity. Também inclui vários plug-ins para compilar, testar, depurar e implantar seus contratos.
Painel Central: Este é o seu editor de código. Aqui você escreverá e editará seu código do Solidity.
Painel direito: Este painel fornece várias ferramentas para compilar seus contratos, implantá-los na rede Ethereum (seja em uma rede Ethereum real ou em uma simulação de VM JavaScript) e interagir com seus contratos implantados.
Nesta parte, vamos escrever nosso primeiro contrato Solidity. Este contrato representará um “Item” básico em nosso mercado.
Para começar, crie um novo arquivo no Remix clicando no segundo ícone da parte superior do painel esquerdo (o ícone do arquivo). Uma nova caixa de diálogo aparecerá no painel central. Digite Item.sol
como nome do arquivo e clique em “OK”.
Solidez
// Identificador de licença SPDX: solidez do pragma MIT
^0.8.6;
contract Item {
// Define um evento que será disparado quando um novo item for criado
event NewItem(uint itemId, string itemName, uint itemPrice);
// Cada item possui um id, um nome e um preço
struct ItemStruct {
string name;
uint price;
}
// Array para armazenar todos os itens
ItemStruct[] public items;
// Função para criar um novo item
function createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
Identificador de licença SPDX: Esta é uma forma padrão de expressar a licença do contrato. A linha // SPDX-License-Identifier: MIT
indica que nosso contrato usa a licença permissiva do MIT.
Diretiva Pragma: pragma solidity ^0.8.6;
especifica que o contrato foi escrito no Solidity versão 0.8.6. O símbolo ^
significa que também será compatível com quaisquer versões mais recentes até, mas não incluindo, a versão 0.9.0.
Definição do contrato: contract Item {...}
define um novo contrato chamado Item
. É aqui que escrevemos as variáveis de estado e funções do contrato.
Definição de evento: event NewItem(uint itemId, string itemName, uint itemPrice);
define um evento que podemos emitir sempre que um novo item for criado. Os eventos são uma forma de os contratos inteligentes registrarem atividades que partes externas podem ouvir.
Definição de estrutura: struct ItemStruct {...}
define um novo tipo de dados ItemStruct
, que representa um Item com um name
e um price
.
Variável de Estado: ItemStruct[] public items;
declara uma variável de estado items
que contém uma matriz de ItemStruct
s. A palavra-chave public
cria automaticamente uma função getter que permite a qualquer pessoa acessar a lista de itens.
Definição de função: function createItem(string memory _name, uint _price) public {...}
define uma função pública que qualquer pessoa pode chamar para criar um novo item. A função recebe um nome e um preço, cria um novo ItemStruct
, adiciona-o ao array items
e emite um evento NewItem
.
Para compilar este contrato, vá ao painel direito e clique no terceiro ícone a partir do topo (o logotipo do Solidity). Aqui você pode compilar o contrato. Clique no botão “Compile” e se não houver erros seu contrato será compilado com sucesso.
IPFS: O InterPlanetary File System (IPFS) é um protocolo projetado para criar uma web permanente e descentralizada. É como um único enxame de BitTorrent, trocando objetos dentro de um repositório Git.
Swarm: Swarm é uma plataforma de armazenamento distribuído e serviço de distribuição de conteúdo nativo da pilha Ethereum web3. Ele permite que uma rede de pares armazene e distribua dados.
Ao compilar um contrato, o compilador Solidity gera um arquivo JSON contendo sua Application Binary Interface (ABI) e seu bytecode, entre outras informações. Isso é chamado de metadados do contrato. Armazenar esses metadados em uma rede de armazenamento descentralizada garante que estejam permanentemente disponíveis e pode ser útil para verificar o código-fonte do contrato.
No entanto, para o seu propósito de aprendizado e se você não planeja verificar o contrato no Etherscan ou qualquer outro explorador de blocos, você pode escolher Swarm ou IPFS, ou pode simplesmente ignorá-lo e passar para as próximas etapas do seu aprendizado. Lembre-se de que o foco principal neste estágio é entender como redigir, compilar e implantar o contrato.