Skip to content

Commit c0e4696

Browse files
committed
project
0 parents  commit c0e4696

File tree

9 files changed

+5834
-0
lines changed

9 files changed

+5834
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.DS_Store
2+
node_modules

compile.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const path = require("path");
2+
const fs = require("fs");
3+
const solc = require("solc");
4+
5+
const lotteryPath = path.resolve(__dirname, "contracts", "Lottery.sol");
6+
const source = fs.readFileSync(lotteryPath, "utf8");
7+
8+
module.exports = solc.compile(source, 1).contracts[":Lottery"];

contracts/Lottery.sol

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
pragma solidity ^0.4.17;
2+
3+
contract Lottery {
4+
address public manager;
5+
address[] public players;
6+
7+
function Lottery() public {
8+
manager = msg.sender;
9+
}
10+
11+
12+
function enter() public payable {
13+
require(msg.value > 200000000, "Minimum ether required");
14+
players.push(msg.sender);
15+
}
16+
17+
function random() private view returns (uint) {
18+
return uint(keccak256(block.difficulty, now, players));
19+
}
20+
21+
function pickWinner() public restricted {
22+
uint index = random() % players.length;
23+
players[index].transfer(this.balance);
24+
players = new address[](0);
25+
}
26+
27+
modifier restricted() {
28+
require(msg.sender == manager, "Only for managers");
29+
_;
30+
}
31+
32+
function getPlayers() public view returns (address[]) {
33+
return players;
34+
}
35+
}

deploy.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const HDWalletProvider = require("truffle-hdwallet-provider");
2+
const Web3 = require("web3");
3+
const { interface, bytecode } = require("./compile");
4+
5+
const provider = new HDWalletProvider(
6+
"couch buddy mixed betray there erosion zebra jungle battle man payment unaware loan evoke crush velvet random wealth stone shrimp banner jungle maple fade",
7+
"https://ropsten.infura.io/v3/640fe7e8258f438abe306c1421b8412e"
8+
);
9+
const web3 = new Web3(provider);
10+
11+
const deploy = async () => {
12+
const accounts = await web3.eth.getAccounts();
13+
14+
console.log("Attempting to deploy from account", accounts[0]);
15+
16+
const result = await new web3.eth.Contract(JSON.parse(interface))
17+
.deploy({ data: bytecode })
18+
.send({ gas: "1000000", gasPrice: '5000000000', from: accounts[0] });
19+
20+
console.log("Contract deployed to", result.options.address);
21+
};
22+
deploy();

interact.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const HDWalletProvider = require('truffle-hdwallet-provider');
2+
const Web3 = require('web3');
3+
const { interface, bytecode } = require('./compile');
4+
5+
const provider = new HDWalletProvider(
6+
'couch buddy mixed betray there erosion zebra jungle battle man payment unaware loan evoke crush velvet random wealth stone shrimp banner jungle maple fade',
7+
'https://ropsten.infura.io/v3/640fe7e8258f438abe306c1421b8412e',
8+
1
9+
);
10+
const web3 = new Web3(provider);
11+
12+
const deploy = async() => {
13+
const accounts = await web3.eth.getAccounts();
14+
console.log(accounts)
15+
const contract = await new web3.eth.Contract(JSON.parse(interface),
16+
"0xBD43Af44158a9CE58D8B8beb082d8bb2B6261dE0");
17+
const manager = await contract.methods.manager().call();
18+
19+
console.log('Contract manager', manager);
20+
21+
await contract.methods.enter().send({value: 200000001, gas: "1000000", gasPrice: '5000000000', from: accounts[0]});
22+
23+
};
24+
25+
deploy();

manager.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const HDWalletProvider = require('truffle-hdwallet-provider');
2+
const Web3 = require('web3');
3+
const { interface, bytecode } = require('./compile');
4+
5+
const provider = new HDWalletProvider(
6+
'couch buddy mixed betray there erosion zebra jungle battle man payment unaware loan evoke crush velvet random wealth stone shrimp banner jungle maple fade',
7+
'https://ropsten.infura.io/v3/640fe7e8258f438abe306c1421b8412e',
8+
0
9+
);
10+
const web3 = new Web3(provider);
11+
12+
const deploy = async() => {
13+
const accounts = await web3.eth.getAccounts();
14+
console.log(accounts)
15+
const contract = await new web3.eth.Contract(JSON.parse(interface),
16+
"0xBD43Af44158a9CE58D8B8beb082d8bb2B6261dE0");
17+
const manager = await contract.methods.manager().call();
18+
19+
console.log('Im the manager', manager == accounts[0]);
20+
21+
const players = await contract.methods.getPlayers().call();
22+
23+
console.log(players);
24+
25+
if (players.length > 0) {
26+
const resp = await contract.methods.pickWinner().send({gas: "1000000", gasPrice: '5000000000', from: accounts[0]});
27+
console.log(resp);
28+
}
29+
30+
};
31+
32+
deploy();

0 commit comments

Comments
 (0)