This Vyper version allows the use of internal
functions in the derived contract.
The request_raffle_winner
and fulfillRandomWords
functions use internal
ERC721
functions:
The snek_raffle
contract inherits the ERC721
contract, but in the README
and in the Vyper documentation for the older version (0.3.10) is said that:
You cannot inherit/override internal functions. This is a specific design choice by the Vyper team - so that knowing exactly what a function is supposed to do is easier.
Vyper Documentation:
Internal functions (marked with the @internal decorator) are only accessible from other functions within the same contract.
https://docs.vyperlang.org/en/v0.3.10/control-structures.html?highlight=internal%20functions#internal-functions
However, the used internal
functions _mint
and _total_supply
work fine in the snek_raffle
contract. The following test shows that. The USER
successfully receive the snek NFT token.
The possibility of inheritance the internal functions is a major change from the previous Vyper version. That will help in the implementation process, but will make harder the readability of the code.
VS Code, pytest
Consider if the inheritance of the internal functions is intented, unintended or it is a compiler error. If it is a compiler error, it should be out of scope according to the README
of the protocol.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.