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.