I’ve been working on a protocol to generate publicly verifiable random numbers. My idea is to overcome the last actor attack  by using multiple entropy sources to feed a lightweight random number generator, which i have already implemented using inline assembly in Solidity .
Anyone that needs to generate a random number can generate a testimony, This testimony includes self selected “random numbers”, expecting the counter part (the entropy providers) to fulfill the rest of the input of the PRNG. Best case scenario, is having all the entropy sources filled, so the number is generated in a combination of numbers delivered by the requester and the entropy providers. None of them knows how their inputs are going to be used until settlement, so they don’t have a way to selectively disclose information, which is the last actor attack (the last entropy provider to send data can decide the final output).
Entropy providers are incentivized to fulfill requirements by requesting some locked value, but, if they fail to fill this requirements, the user can generate the random number with the already delivered entropy sources (of course the most entropy sources delivered, the better).
My current implementation makes use of Chainlink, as Chainlink provides with the necessary architecture to align incentives between nodes operators (entropy providers) and requesters.
I’m attaching a little explanation here → https://drive.google.com/file/d/10sbXuKuFqSuQi5vxff_IQzoGhsZy77YB/view
Maybe there are still so many lose pieces, i’ll be glad to elaborate more if requested.