Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
Solidity TypeError en contrato de lotería

Estoy escribiendo un contrato de Lotería simple en Solidity, y en la última línea me sale este error:

 TypeError: Return argument type address payable[] storage ref is not implicitly convertible to expected type (type of first return variable) address[] memory. contracts/Lottery.sol:40:16: return players; ^^^^^^^

Estoy compilando en 8.7 con este código:

 //SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.17 <0.9.0; //pragma solidity ^0.4.17; contract Lottery { address public manager; address payable[] public players; constructor() { manager = msg.sender; } function enter() public restricted payable { require(msg.value >= .01 ether); //min. amount to enter the lottery is 0.01 ether in wei players.push(payable(msg.sender)); } function random() private view restricted returns(uint) { //picking random number, we use block difficulty, current block time and amount of players to hash with sha3 algorithm return uint(keccak256(abi.encodePacked(block.difficulty, block.timestamp , players))); //keccak256 == sha3 } function pickWinner() public { require(msg.sender == manager); //only manager can pick winner uint index = random() % players.length; //pick winner by using random number and % modulo from it, as player in array //players[index].transfer(this.balance); players[index].transfer(address(this).balance); //player with index number in players array is winner, return address //transfer(amount of lottery reward); players = new address payable[](0); //reseting lottery; '0' means size of dynamic array } modifier restricted() { //modifier for repeated functions require(msg.sender == manager); _; // _ means run the rest of the code inside this function } function getPlayers() public view returns(address[] memory) { return players; } }

¿Qué está mal? ¡Gracias por la ayuda!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Solo debe cambiar el tipo de retorno a la firma de la función getPlayers() en su lugar:

 function getPlayers() public view returns(address[] memory) { ... }

cambiarlo con esto:

 function getPlayers() public view returns(address payable[] memory) { ... }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda