Guia rápido para controle de acesso Solidity
Neste artigo, exploraremos os vários mecanismos de controle de acesso do Solidity com exemplos e como eles podem ser usados para impor o acesso restrito a partes específicas de um contrato inteligente.
Na maioria dos contratos, o acesso ao contrato é restrito. A menos que especificado como público, um estado de contrato é somente leitura por padrão.
Solidity Controle de Acesso / Acesso Restrito
Um contrato pode ser impedido de ser modificado ou ser chamado com a ajuda de modificadores.
Aqui estão as etapas que seguiremos para criar e usar vários modificadores:
- onlyBy : Quando usado em uma função, só pode ser chamado pelo usuário mencionado na chamada.
- OnlyAfter : Especifica que uma função pode ser chamada após um certo período de tempo.
- Costs : uma vez usado em uma função, o chamador só pode chamar essa função se um determinado valor for fornecido.
O seguinte programa mostra os métodos de restrição de funções:
Example:
Exemplo de Explicação
O exemplo acima contém duas funções, get_Product e get_Sum , e dois modificadores , onlyBy e onlyAfter.
O contrato SolidityTest contém duas variáveis de estado , owner e time , que são inicializadas com o endereço do criador do contrato (msg.sender) e o timestamp do bloco atual (block.timestamp), respectivamente.
O modificador onlyBy é definido para restringir o acesso a determinadas funções apenas ao proprietário do contrato.
A instrução require verifica se o parâmetro user_address passado para a função corresponde ao endereço do proprietário.
Se o endereço não corresponder, a função será revertida com uma mensagem de erro. O símbolo _ é um espaço reservado que representa o código da função à qual o modificador é aplicado.
A função get_Product usa dois parâmetros uint, mrx e ample, e retorna seu produto.
O modificador onlyBy(owner) é aplicado à função, o que significa que somente o proprietário do contrato pode chamar essa função.
O modificador onlyAfter é definido para restringir o acesso a determinadas funções até que um determinado registro de data e hora do bloco seja alcançado.
A instrução require verifica se o parâmetro enter_Time passado para a função é igual ou maior que a variável de estado time mais 1 minuto. Se a condição não for atendida, a função será revertida com uma mensagem de erro.
A função get_Sum usa dois parâmetros uint, mrx e ample, e retorna sua soma. Os modificadores onlyBy(owner) e onlyAfter(time + 1 minutes) são aplicados à função, o que significa que somente o proprietário do contrato pode chamar essa função e a função só pode ser chamada um minuto após a implantação do contrato.
Aqui está outra função que mostra o processo de verificação do comprador, transferência e verificação de tempo para criptografar a função apenas para o comprador real:
Example:
Conclusão
As restrições de função Solidity fornecem a capacidade de adicionar condições ou restrições adicionais à execução de seus contratos inteligentes.
É possível tornar seu código mais seguro, robusto e eficiente usando modificadores.
O tipo de restrições que precisam ser implementadas em um contrato inteligente do Solidity deve ser cuidadosamente considerado e modificado de acordo.
Isso permite que você crie contratos inteligentes que são mais confiáveis e confiáveis e mais adequados às suas necessidades específicas.