Add project2 challenge contracts

This commit is contained in:
2021-12-20 10:29:13 +01:00
parent a7a05cd8fc
commit 5f6b9fd47c
23 changed files with 677 additions and 0 deletions
+1
View File
@@ -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"}]
+1
View File
@@ -0,0 +1 @@
608060405260405160208061085b8339810180604052602081101561002357600080fd5b810190808051906020019092919050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610796806100c56000396000f3fe608060405260043610610098576000357c0100000000000000000000000000000000000000000000000000000000900480637065cb481161006b5780637065cb48146101e95780638da5cb5b1461023a578063b439548d14610291578063d0e30db0146102e857610098565b8063173825d91461009d5780632e1a7d4d146100ee5780632f54bf6e14610129578063699450e814610192575b600080fd5b3480156100a957600080fd5b506100ec600480360360208110156100c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f2565b005b3480156100fa57600080fd5b506101276004803603602081101561011157600080fd5b81019080803590602001909291905050506104cb565b005b34801561013557600080fd5b506101786004803603602081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610574565b604051808215151515815260200191505060405180910390f35b34801561019e57600080fd5b506101a76105e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f557600080fd5b506102386004803603602081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610608565b005b34801561024657600080fd5b5061024f610719565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029d57600080fd5b506102a661073e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102f0610768565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061039a57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561040e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4163636573732064656e6469656421000000000000000000000000000000000081525060200191505060405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055151561047057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561052a57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610570573d6000803e3d6000fd5b5050565b600060011515600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156105d857600190506105dd565b600090505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514806106b357506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156106be57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b56fea165627a7a7230582022ef29aa0fac0599c80abf8dd89a42f924e3b0f99adb34fa863fa92d5a91f1110029
+60
View File
@@ -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;
}
}
+9
View File
@@ -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.