Se você é como eu, então, na primeira vez que escreveu um contrato inteligente em Solidity, pensou consigo mesmo; por que os contratos inteligentes começam com um identificador de licença? O que significa o identificador de licença SPDX e por que fazemos referência ao Instituto de Tecnologia de Massachusetts (MIT)?
Em minha jornada de contrato inteligente até agora, descobri que muitos desenvolvedores de Solidity falham em ter respostas para as perguntas acima. Eles simplesmente copiam e colam em seus códigos como uma necessidade, sem entender por que é necessário em primeiro lugar.
Se você é culpado de tal (eu também fui em algum momento), então venha comigo neste artigo enquanto discuto detalhadamente o que são identificadores de licença em software, por que eles são importantes em contratos inteligentes e como você pode fazer sem eles em seus códigos de Solidity.
Nossas vidas diárias giram em torno de software, eles alimentam a era digital em que nos encontramos atualmente. Para a maioria dos softwares, antes de aproveitarmos seus benefícios, primeiro temos que concordar com alguns termos e condições relativos ao seu uso.
As condições precedentes para o uso de um software geralmente estão contidas em um arquivo. Este arquivo define os termos de uso do software. Ele contém alguns dos seguintes;
- Até que ponto o usuário final gosta do software.
- Limitações ao uso do software.
- Certas responsabilidades do usuário final.
- O direito de propriedade intelectual do criador do software.
- Algumas limitações da responsabilidade do criador.
- Além de vários outros termos e cláusulas legais, principalmente para proteger o direito de propriedade intelectual do criador.
Este arquivo é o que chamamos de licença de software. Uma licença de software define as regras que orientam o uso do produto.
Antes que os usuários possam desfrutar de um software, eles primeiro assinam um Contrato de licença de usuário final ou EULA. O EULA é um contrato entre o criador do software (licenciador) e o usuário final (licenciado) que estabelece o direito deste último de usar o software.
Todos os dias, você entra em um EULA sem saber. Quando você executa um software pela primeira vez (nem sempre é o caso) ou clica em um pop-up “aceitar os termos e condições” em seu site favorito, você está entrando em um EULA.
Sumário
1 . Por que as licenças de software são importantes
..... . Classificação de Software e Licenças de Software
..... . Software não licenciado
..... . Software licenciado
..... . Onde entra a Solidity em tudo isso
..... . Onde o SPDX License Identifier deve estar localizado no meu código
..... . O que acontece se eu não incluir o identificador SPDX em meu contrato inteligente
..... . Posso optar por não identificar uma licença
2 . Conclusão
Por que as licenças de software são importantes
As licenças de software são importantes por vários motivos, tanto para o criador quanto para os usuários finais. Algumas dessas razões são;
- Para os criadores, protege seus direitos de propriedade intelectual.
- Serve também para limitar as suas responsabilidades decorrentes da utilização dos produtos.
- Para os usuários, as licenças servem para estabelecer e limitar até que ponto eles podem usar, modificar ou distribuir o software.
Classificação de Software e Licenças de Software
Geralmente, na linguagem jurídica, um software pode ser classificado como não licenciado ou licenciado. Essa classificação determina até que ponto o software pode ser usado, modificado e redistribuído.
Software não licenciado
é aquele não contemplado pelos termos e condições de uso. Eles podem ser subdivididos em software de domínio público e software privado não licenciado.
**Software de Domínio Público: **São softwares de domínio público. Eles estão livres de termos e limitações de uso. Um usuário é livre para usar, modificar e redistribuir à vontade. Um exemplo disso é o SQLite (um mecanismo de banco de dados).
Software privado não licenciado: Eles não vêm com licenças, mas são protegidos pela lei de direitos autorais. O fato de esses softwares não serem licenciados não significa que se possa usá-los à vontade, os usuários ainda precisam ter cuidado em como os usam, modificam ou redistribuem.
Software licenciado
é aquele software com termos e condições explícitas para seu uso. O tipo de licença usado por este software pode ser amplamente agrupado em licenças de software livre e de código aberto e licenças de software proprietário.
- Licenças de software livre e de código aberto: essas licenças permitem que os usuários usem o código operacional, modifiquem os códigos-fonte e também os redistribuam com pouca ou nenhuma restrição.
Tipos comuns de licenças de software de código aberto
Licenças permissivas: São o tipo mais comum de licença de software. As licenças permissivas permitem que você use, modifique e redistribua o software com restrições mínimas. Exemplos incluem; Apache e MIT (usado no Solidity).
**Licenças copyleft: **permitem o uso do software e a modificação no próprio produto, com uma ressalva. A ressalva é que deve-se retribuir a licença ao distribuir um produto/software feito a partir do uso do software original portador deste tipo de licença.
Você só tem permissão para usar o software desde que inclua a mesma licença usada pelo software anterior em qualquer produto redistribuído criado a partir da modificação do software anterior. Assim, as licenças copyleft permitem o uso e a modificação, mas restringem a redistribuição.
- Proprietário ou comercial: ao contrário das licenças de software de código aberto, as licenças de software comercial não permitem o uso, modificação ou redistribuição de software. Mesmo que o façam, elas tendem a conceder permissões muito restritivas. Essas licenças geralmente são anexadas a software comercial e são fortemente protegidas pela lei de direitos autorais. Este tipo de licença é comum entre entidades empresariais. Com eles, você não pode usar ou fazer engenharia reversa do código-fonte.
Onde entra a Solidity em tudo isso
Como estabelecemos acima, para projetos de código aberto, onde os usuários podem desfrutar, modificar e redistribuir o software, é melhor que eles venham com uma licença permissiva de código aberto.
A maioria dos contratos inteligentes e protocolos blockchain são de código aberto. É essencial que eles sejam de código aberto, pois a confiança é um dos princípios-chave do blockchain e da web 3. Tornar seu contrato de código aberto ajuda no estabelecimento de confiança.
Como resultado, você deve fornecer/identificar o tipo de licença de código aberto que o contrato usa para definir os termos e condições de uso do seu contrato. O padrão de licenciamento recomendado na rede Ethereum são os identificadores de licenciamento SPDX que podem ser lidos pela Máquina Virtual Ethereum (EVM).
SPDX refere-se a Software Data Package Exchange. É um projeto de código aberto hospedado pela Linux Foundation. O objetivo é ajudar a padronizar os formatos de compartilhamento de dados. Uma maneira pela qual o SPDX faz isso é fornecer uma lista de licenças de código aberto para referência de projetos. A lista de licenças de código aberto SPDX disponível para projetos inclui Apache, Barr, BSD e muito mais. A licença recomendada no Solidity é, no entanto, a licença MIT.
Para resumir o que foi dito acima, o SPDX fornece um padrão para compartilhamento de dados de software (código aberto). Um desses padrões comuns está na referência de licença. Eles fazem isso fornecendo uma lista de licenças que os projetos podem referenciar. A licença MIT usada no solidity é uma das muitas licenças no Lista SPDX.
Onde o SPDX License Identifier deve estar localizado no meu código
O identificador de licença SPDX pode ser escrito em qualquer lugar do seu código, pois o compilador Solidity pode reconhecê-lo em qualquer lugar. No entanto, é considerado uma boa prática escrevê-lo no início do seu código.
O que acontece se eu não incluir o identificador SPDX em meu contrato inteligente
A falha em fazer referência a uma licença em seu contrato fará com que o compilador Solidity lance um aviso em vez de um erro. Por outro lado, identificar várias licenças gerará um erro.
Posso optar por não identificar uma licença
Curiosamente, se você deseja proibir a reutilização, modificação e redistribuição de código, pode especificá-lo em seu contrato. Em vez de fornecer um identificador de licença, você pode simplesmente usar o valor especial; SEM LICENÇA.
Dessa forma, o compilador saberá que você está restringindo o uso do seu contrato.
Conclusão
Os pontos mais importantes desta peça estão resumidos abaixo.
- As licenças de software especificam os termos pelos quais esse software pode ser usado, modificado e redistribuído.
- Um software pode ter licenças gratuitas e de código aberto ou licenças proprietárias.
- Licenças gratuitas e de código aberto permitem o uso de um software com pouca ou nenhuma restrição.
- As licenças proprietárias, por outro lado, proíbem expressamente o uso desse software ou permitem o uso sob condições muito estritas.
- SPDX significa Software Data Package Exchange. Eles são um projeto de código aberto que ajuda a padronizar as licenças de código aberto.
- Algumas das licenças de código aberto disponíveis em sua lista de licenças incluem; MIT, Apache, Barr e BSD.
- Esses tipos de licenças de código aberto são chamados de licenças permissivas e permitem o uso de software com restrições mínimas.
- A maioria dos contratos inteligentes é de código aberto, pois ajuda a criar confiança no contrato ou protocolo.
- A confiança é uma característica fundamental da blockchain.
- Solidity usa a licença MIT para especificar os termos de uso de cada contrato.
- Você pode incluir seu identificador de licença em qualquer lugar do contrato, mas especificá-lo na parte superior do código é considerado uma prática recomendada.
- A falha em incluir um identificador de licença faz com que seu compilador lance um aviso.
- Ter várias licenças resulta em um erro do compilador.
- Se o seu contrato não for de código aberto, você pode deixar de ter um identificador de licença para o valor especial; SEM LICENÇA
Este artigo foi escrito por CodeHardlt e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.
Latest comments (0)