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/modifiednewYear.sol b/contract/modifiednewYear.sol new file mode 100644 index 0000000..6055ecb --- /dev/null +++ b/contract/modifiednewYear.sol @@ -0,0 +1,92 @@ +pragma solidity ^0.4.19; + +contract NEW_YEARS_GIFT +{ + string message; + + bool public passHasBeenSet = false; + + address public sender; + + bytes32 public hashPass; + + function() public payable{} + + function GetHash(bytes pass) public constant returns (bytes32) {return sha3(pass);} + + function SetPass(bytes32 hash) + public + payable + { + if( (!passHasBeenSet&&(msg.value > 1 ether)) || hashPass==0x0 ) + { + hashPass = hash; + sender = msg.sender; + } + } + + function SetMessage(string _message) + public + { + if(msg.sender==sender) + { + message =_message; + } + } + + function GetGift(bytes pass) + external + payable + returns (string) + { + if(hashPass == sha3(pass)) + { + msg.sender.transfer(this.balance); + return message; + } + } + + function Revoce() + public + payable + { + if(msg.sender==sender) + { + sender.transfer(this.balance); + message=""; + } + } + + function PassHasBeenSet(bytes32 hash) + public + { + if(msg.sender==sender&&hash==hashPass) + { + passHasBeenSet=true; + } + } +} + +contract Modified { + + + NEW_YEARS_GIFT public C; + // address public owner; + constructor() public { + C = new NEW_YEARS_GIFT(); + } + + function() public payable{} + + + function newPassSetCall(bytes32 hash) public payable{ + C.SetPass.value(1 ether)(hash); + C.PassHasBeenSet(hash); + } + + function payout() public { + C.Revoce(); + msg.sender.transfer(this.balance); + } + +} diff --git a/my-eth-wallet/package.json b/my-eth-wallet/package.json new file mode 100644 index 0000000..348642c --- /dev/null +++ b/my-eth-wallet/package.json @@ -0,0 +1,15 @@ +{ + "name": "vue-template", + "version": "1.0.0", + "description": "", + "main": "serve.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "express": "^4.16.3", + "web3": "^0.20.7" + } +} diff --git a/my-eth-wallet/public/index-metamask.html b/my-eth-wallet/public/index-metamask.html new file mode 100644 index 0000000..fb7b83b --- /dev/null +++ b/my-eth-wallet/public/index-metamask.html @@ -0,0 +1,204 @@ + + + + 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');