-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.js
129 lines (113 loc) · 4.7 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
var contract_address = "0x1EcCD1B5CE36FC23998b85D1c8f3ff71c24f2e51";
var contract_abi = [{"constant":true,"inputs":[],"name":"getCreator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"myNewNumber","type":"uint256"}],"name":"setMyNumber","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMyNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whoIncreased","type":"address"},{"indexed":true,"name":"oldNumber","type":"uint256"},{"indexed":true,"name":"newNumber","type":"uint256"}],"name":"NumberIsIncreased","type":"event"}];
//Interact with wallet balance example
function getBalance(){
document.getElementById('myBalance').innerText = web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]), "Ether");
}
//Interact with contract example
var contract_instance = web3.eth.contract(contract_abi).at(contract_address);
function getCounter() {
document.getElementById("myCounter").innerText = contract_instance.getMyNumber().toNumber();
}
function increaseCounter() {
var currentNumber = contract_instance.getMyNumber().toNumber();
currentNumber++;
web3.personal.unlockAccount(web3.eth.accounts[0], 'test123');
contract_instance.setMyNumber(currentNumber, {from: web3.eth.accounts[0]}, function(error, result) {
if(error) {
console.error(error);
} else {
var txHash = result;
console.log(txHash);
callWhenMined(txHash, getCounter);
}
});
}
function callWhenMined(txHash, callback) {
web3.eth.getTransactionReceipt(txHash, function(error, rcpt) {
if(error) {
console.error(error);
} else {
if(rcpt == null) {
setTimeout(function() {
callWhenMined(txHash, callback);
}, 500);
} else {
callback();
}
}
})
}
//Events and Filters example
function makeButtonsVisible() {
var buttons = document.getElementsByClassName("buttonVisibleWhenInstanceAvailable");
for(var i = 0; i < buttons.length; i++) {
buttons[i].style.visibility = 'visible';
}
}
function getPreviouslyDeployedContract() {
contract_instance = web3.eth.contract(contract_abi).at(contract_address);
makeButtonsVisible();
}
var myEvent;
function watchEvents() {
myEvent = contract_instance.NumberIsIncreased({}, {fromBlock:'latest', toBlock:'latest'});
console.log(myEvent);
myEvent.watch(function(error, result) {
if(error) {
console.log(error);
} else {
console.log(result);
document.getElementById("events").innerHTML = document.getElementById("events").innerHTML + "<br />" + JSON.stringify(result);
}
});
}
function stopWatchingEvents() {
if(myEvent !== undefined) {
myEvent.stopWatching();
}
}
function getAllEvents() {
contract_instance.allEvents({fromBlock: 0, toBlock: 'latest'}, function(error, result) {
if(error) {
console.error(error);
} else {
console.log(result);
}
})
}
function getNumberIsIncreasedEvent() {
contract_instance.NumberIsIncreased({}, {fromBlock: 0, toBlock: 'latest'}).get(function(error, result) {
if(error) {
console.error(error);
} else {
console.log(result);
}
});
}
var filter;
function filterEventsWatch() {
filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', address: contract_instance.address, 'topics':[web3.sha3('NumberIsIncreased(address,uint256,uint256)')]});
filter.watch(function(error, result) {
if(error) {
console.error(error);
} else {
console.log({"type": "filter", "obj": result});
console.log(web3.toDecimal(result.topics[3]));
}
})
}
function stopFilterEventsWatch() {
filter.stopWatching();
}
function filterEventsGet() {
var filter = web3.eth.filter({fromBlock:0, toBlock: 'latest', address: contract_instance.address, 'topics':[web3.sha3('NumberIsIncreased(address,uint256,uint256)')]});
filter.get(function(error, result) {
if(error) {
console.error(error);
} else {
console.log({"type": "filter", "obj": result});
}
})
}