Vis enkel innførsel

dc.contributor.advisorJehl, Leander
dc.contributor.authorHavstad, Daniel Solheim
dc.date.accessioned2024-08-07T15:51:20Z
dc.date.available2024-08-07T15:51:20Z
dc.date.issued2024
dc.identifierno.uis:inspera:242954424:244656686
dc.identifier.urihttps://hdl.handle.net/11250/3145171
dc.description.abstractDecentralized peer-to-peer (P2P) storage networks using blockchain technology such as Swarm emerge as a viable alternative to central cloud storage. Providing a solution to having a single point of failure, added security by not having to trust third party cloud providers, and resistance against possible censorship. However, ensuring the longevity, reliability, and fairness of such networks presents formidable challenges in the face of node churn and free riding. Each network participant needs to be compensated accordingly for both their storage capacity needed to persist user files, and the bandwidth needed for clients to upload and retrieve their files. Swarm in particular aims to be a zero cost of entry, self regulating, and sustainable storage network, boasting that storage incentives is the missing piece for blockchain. The Swarm storage incentives are handled by a redistribution game that is run by a set of Ethereum compatible smart contracts. Each round of this game decides on a network participant to receive the reward for storing files through the redistribution smart contract. In this thesis we are evaluating the storage incentives in Swarm by analysing the redistribution smart contract. Our analysis shows that the current truth selection and freezing mechanisms in Swarm, lead to a viable free riding strategy for malicious storage nodes. We propose two alternative solutions to mitigate the problem: the alpha solution, and the bank solution. Both solutions have the attribute, that the reward in a redistribution round might not be handed out to storage node network participants. In the case where multiple different proofs of storage are submitted in a round, thus providing incentive for every network node to work together in submitting the same value. We refer to the case of when there is no winning storage node, as a win for the bank entity. The bank solution is more simple, and it is easier to implement such that it minimizes the gas cost of the contract. Whereas the alpha solution is overall more fair, but trickier to implement, and with more gas overhead. Further key milestones in this thesis are that. We show how both solutions can be implemented in the Solidity programming language. That we evaluate the implemented solutions by using real data from previous redistribution rounds. In this evaluation we showed that the implemented smart contracts could be run in a realistic albeit development setting with ganache blockchain. And we were able to confirm that we were effective in mitigating the strategy of sending in arbitrary proof of storage, whilst comparing the two different solutions. %In order to both confirm that the solutions are potentially ready to be deployed on a real blockchain, and to confirm we have When deciding what to do when the bank entity wins, we take care to analyse what happens if we burn or carry the reward over into the next round. Particularly interesting is the latter case (which we decided to implement), where new possible storage incentive exploits could occur. These are exploits that rely on a node operator being present in multiple Swarm neighbourhoods, to try and increase their chance to win the carried over reward. We looked into ones where said node operator had i) the same stake in each neighbourhood, and ii) dividing the neighbourhoods the operator is in by two, having a separate stake in each. The majority of exploits we looked at needed an unfeasible amount of investment to pull off for bank, and alpha. However we did discover that the bank solution is vulnerable to ii).
dc.description.abstract
dc.languageeng
dc.publisherUIS
dc.titleEvaluation and Revision of Swarm's Redistribution Smart Contract
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel