Add project2 challenge contracts
This commit is contained in:
@@ -0,0 +1 @@
|
||||
[{"constant":false,"inputs":[{"name":"oldowner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"testowner","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"student","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newowner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStudent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_student","type":"address"}],"payable":true,"stateMutability":"payable","type":"constructor"}]
|
||||
@@ -0,0 +1 @@
|
||||
608060405260405160208061085b8339810180604052602081101561002357600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610796806100c56000396000f3fe608060405260043610610098576000357c0100000000000000000000000000000000000000000000000000000000900480637065cb481161006b5780637065cb48146101e95780638da5cb5b1461023a578063b439548d14610291578063d0e30db0146102e857610098565b8063173825d91461009d5780632e1a7d4d146100ee5780632f54bf6e14610129578063699450e814610192575b600080fd5b3480156100a957600080fd5b506100ec600480360360208110156100c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f2565b005b3480156100fa57600080fd5b506101276004803603602081101561011157600080fd5b81019080803590602001909291905050506104cb565b005b34801561013557600080fd5b506101786004803603602081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610574565b604051808215151515815260200191505060405180910390f35b34801561019e57600080fd5b506101a76105e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f557600080fd5b506102386004803603602081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610608565b005b34801561024657600080fd5b5061024f610719565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029d57600080fd5b506102a661073e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f0610768565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061039a57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561040e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4163636573732064656e6469656421000000000000000000000000000000000081525060200191505060405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055151561047057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561052a57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610570573d6000803e3d6000fd5b5050565b600060011515600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156105d857600190506105dd565b600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514806106b357506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156106be57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b56fea165627a7a7230582022ef29aa0fac0599c80abf8dd89a42f924e3b0f99adb34fa863fa92d5a91f1110029
|
||||
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
|
||||
Look Mom, I coded my first wallet contract to learn solidity!
|
||||
It even supports multiple owners!
|
||||
|
||||
**/
|
||||
|
||||
pragma solidity ^0.5.4;
|
||||
|
||||
contract NotAWallet{
|
||||
|
||||
address public owner;
|
||||
address public student;
|
||||
mapping (address => bool) owners;
|
||||
|
||||
constructor(address _student) public payable{
|
||||
student = _student;
|
||||
owner = msg.sender;
|
||||
}
|
||||
|
||||
function deposit() public payable {
|
||||
// recieve coins
|
||||
}
|
||||
|
||||
function addOwner(address newowner) public {
|
||||
require (owners[msg.sender] == true || msg.sender == owner);
|
||||
owners[newowner] = true;
|
||||
}
|
||||
|
||||
function removeOwner(address oldowner) public rightStudent {
|
||||
require(owners[msg.sender] = true);
|
||||
owners[oldowner] = false;
|
||||
}
|
||||
|
||||
function withdraw(uint256 amount) public {
|
||||
// only owners can withdraw funds
|
||||
require(owners[msg.sender] == true);
|
||||
msg.sender.transfer(amount);
|
||||
}
|
||||
|
||||
function isOwner(address testowner) public view returns (bool) {
|
||||
if (owners[testowner] == true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// ensure that only designated student has access to this challenge
|
||||
modifier rightStudent() {
|
||||
require(msg.sender == student || msg.sender == owner, "Access dendied!");
|
||||
_;
|
||||
}
|
||||
// helper function to check if interacting with right contract
|
||||
function getStudent() public view returns (address) {
|
||||
return student;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Challenge NotAWallet
|
||||
|
||||
This is a Wallet Contract and its source code that you have stumbled upon
|
||||
Can you spot what is wrong with it?
|
||||
|
||||
# Task
|
||||
|
||||
Drain the contract of its funds and fill up your own account with them.
|
||||
|
||||
Reference in New Issue
Block a user