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

  Describe the types of role hierarchy constraints

List and define the four types of entities in a base model RBAC system. Describe three types of role hierarchy constraints.

  Describe the different roles

define the different roles you think might be fulfilled by Web Services and Web Portals. What do you see as the major distinctions between the two from the perspective of provisions of eBusiness services? Which do you think is the more useful in t..

  Role of antennas in transmitting radio waves

Explain the role of antennas in transmitting the radio waves. What kinds of antenna are typically used in the wireless LAN?

  A program on a registration application for a school

a program on A registration application for a school

  What ordering results in an optimal tree

Inserting the values in different orders results in different shapes of trees. What ordering results in an optimal (complete) tree? Show the resulting tree.

  Addressing the latest trends in computer memory technology

Addressing the latest trends in computer memory technology development. Various types of memory and their merits, demerits, and areas of application.

  Create a shadow on phrase html5 canvas

Create a shadow on phrase "HTML5 Canvas"

  Aspect of software engineering

Select a topic related to some aspect of the Software Engineering. Write about 2500+ word (minimum) paper on that particular topic-single spaced 12 pt times or times new roman font.

  What is the concurrency control and what is its objective

What is the role of a database management system (DBMS) and what are its benefits.

  Write a program that asks for the number of units sold

Write a program that asks for the number of units sold and computes the total cost of the purchase. Write a program that asks for the number of checks written durign the past month, then computes an displays the bank's fees for the month.

  Write a program to infer the key based on the assumption

Write a program to infer the key, based on the assumption that frequency of occurrence of each character in odd positions should be roughly equal to frequency.

  How are the enterprise software tools

How are enterprise software tools/enterprise resource planning used in helping to decrease the cost of designing and implementing new systems.

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