Create a function that allows players to reveal their choice

Assignment Help Computer Engineering
Reference no: EM131893017

Assignment

1 Project

Projects are to be completed individually.

1.1 Topic

The topic of this project is to create a system based on Ethereum for playing a lottery. You will create an Ethereum smart contract and one or more Python programs to interact with the smart contract (i.e., to play the Lottery).

The system should model lotteries where players pick numbers before a deadline. After the deadline, numbers are drawn and if any players have picked the drawn numbers they share the money that was raised (minus a fee paid to the person running the lottery).

To model the idea of players picking numbers, the smart contract must use the same ideas discussed in the blind auction example. That is, players must commit to a choice by submitting a hash of their choice to the smart contract before the deadline to play. Players can send ETH at the same time as their payment for playing. Then the owner of the contract should submit the winning numbers to the smart contract. The players can observe the winning numbers being submitted. If a player chose the winning numbers they can reveal their previous choice to the smart contract to prove that they are a winner. After the deadline for winners to reveal themselves, the winners can collect their winnings from the smart contract.

You should proceed in this order:

1. Keep it simple. Use just one number for the lottery initially. You can add more later for extra credit if you wish.

2. Develop and test your smart contract from the browser using remix with the JavaScript VM option. You must save a copy of your Solidity source code frequently as a backup.

HINTS for developing your smart contract:

1. In remix, start with the ballot Solidity contract, then delete most of the contents to get a skeleton Solidity contract.

2. Create the "constructor" function that stores the contract creator as the owner (just like the ballot example). Test it in remix.

3. Create a function that allows players to play and commit their choice. It should store the player's choice. Test it in remix.

4. Add a deadline for playing to your contract. If a player tries to play after the deadline, the play should be rejected. The deadline to play can be set by the contract creator at the time of creation and stored. Test it in remix.

5. Create a function that allows the owner to submit the winning numbers after the deadline to play has passed. Test it in remix.

6. Create a function that allows players to reveal their choices to the lottery after the owner has submitted the winning numbers. Test it in remix.

7. Add a new deadline for revealing choices to your contract. If a player tries to reveal after that deadline, the reveal should be rejected. The deadline to reveal can be set by the contract creator at the time of creation and stored. Test it in remix.

8. Create a function that allows winning players to request withdrawal of their share of the winnings after the deadline to reveal has passed. Note that you will need to determine how many winners there are, and divide the jackpot between them.

3. Either deploy your contract on Rinkeby or testrpc/ganache using remix, or compile your contract using solc (see worksheet 6) and deploy your contract from a Python program (to either Rinkeby or testrpc/ganache).

4. Write and test a Python program for players to submit a choice to the lottery. Your contract should prevent it from working after the deadline for playing.

5. Write and test a Python program for the contract owner to submit the winning numbers to the lottery. If anyone but the owner tries to submit winning numbers, or if the deadline for playing has not passed, the contract should reject the transaction.

6. Write and test a Python program for players to reveal their choices to the lottery. Your contract should prevent it from working before the contract owner has submitted the winning numbers and after the deadline for revealing has passed.

7. Write and test a Python program to allow winning players to collect their share of the winnings after the deadline to reveal choices has passed.

8. Decide on, and implement, a sensible strategy for what should happen when there are no winners.

Reference no: EM131893017

Questions Cloud

Discuss the brainstorm issues in brief : Think of a recent change that occurred at your college, in your community, or in the news. Use the three-sphere model for systems management and brainstorm.
Degrees at maximum distance from the planet : What is the moon's angular size in degrees at maximum distance from the planet?
Calculate the radius of sphere in km : Suppose there are 10^6 (1 million) asteroids that are 0.84 km in radius. If they were all combined into single sphere, calculate the radius of this sphere in km
Ratio of the moon diameter to the sun diameter : (a) What is the ratio of the Moon's diameter to the Sun's diameter? The ratio of the Moon's diameter to the Sun's diameter is about ___?
Create a function that allows players to reveal their choice : Create a function that allows players to reveal their choices to the lottery after the owner has submitted the winning numbers. Test it in remix.
What are some communication channels and barriers : From theory, what are some communication channels and barriers? Now from professional experiences, what are some communication channels and barriers?
Calculate the distance to a star in parsecs : Briefly explain how we calculate the distance to a star in parsecs by measuring its parallax angle in arcseconds. Give an example.
Find the surface gravity on the moon from values : The Moon's radius is 1.74 × 106 m, while its mass is 7.35 × 1022 kg. Find the surface gravity on the Moon from these values.
What is the optimum mix of pants and shirts : A textile can make pants and sshirts. it can sell pants for 6$ profit per pairs and shirts for 3$ per shirts. the manufacturing process consists of a knitting.

Reviews

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd