[ブロックチェーンノート11]web 3.js実用コードセグメント
23121 ワード
環境web 3環境のチェック
window.addEventListener('load', function() {
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
if (web3.currentProvider.isMetaMask == true) {
//metamask
} else {
// metamask
}
} else {
// metamask
}
})
ネットワーク環境の確認
web3.version.getNetwork((err, netId) => {
switch (netId) {
case '1': //mainnet
break
case '2': //deprecated morden test network
break
case '3': //ropsten test network
break
case '4': //Rinkeby test network
break
default:
console.log('This is an unknown network.');
}
});
アカウント情報の取得
//0.20.x
''
ethereum.enable();
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider('http:127.0.0.1:7545'));
console.log('web3 local provider:' + web3);
}
var accounts = web3.eth.accounts;
console.log('accounts[0]: ' + accounts);
web3.eth.getAccounts(function callback1(err1, result) {
web3.eth.getBalance(result[0], function callback2(err2, value) {
$('#info').html(value);
})
})
//1.x.x
' '
ethereum.enable();
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider('http:127.0.0.1:7545'));
console.log('web3 local provider:' + web3);
}
web3.eth.getAccounts()
.then((res) => web3.eth.getBalance(res[0]))
.then((value) => $('#info').html(value));
var infoContract = web3.eth.contract(ABI);
var info = infoContract.at("address");
// remix
infoContract.new({
from: mySenderAddress,
data:bytecode,
gas:gasEstimate
});
info.getInfo(function(err, result) {
})
info.setInfo(name, age, function(err, result) {
})
//
web3.eth.getAccounts(function(err, accounts) {
// accounts
})
// gas
var message = {from: fromAccount, to:toAccount, value:web3.toWei(amount, 'ether'),
gas:gas, gasPrice:gasPrice};
//
web3.eth.defaultAccount = fromAccount;
var message = {to:toAccount, value:web3.toWei(amount, 'ether')};
web3.eth.sendTransaction(message, (err, res) => {
var output = "";
if (!err) {
output += res;
} else {
output = "Error";
}
document.getElementById('transactionResponse').innerHTML = "Transaction response " + output + "
"
});
イベント
event EventName(uint param);
トリガイベントemit EventName(10);
pragma solidity ^0.4.23;
contract InfoContract {
string name;
uint age;
event doneEvent(string name, uint age);
function setInfo(string _name, uint _age) public {
name = _name;
age = _age;
emit doneEvent(name, age);
}
function getInfo() public view returns (string, uint) {
return (name, age);
}
}
var infoEvent = info.doneEvent();
infoEvent.watch(function(error, result) {
if (!error) {
//$('#loader').hide();
$('#info').html(result.args.name + '(' + result.args.age + ' years old)');
} else {
//$('#loader').hide();
$('#info').hmtl('Error:' + error);
}
})
に、このリスニングイベントの で が しました.
var infoEvent = info.doneEvent();
という のコードの で、jsのconsoleはdonEventが ではないと っています. いことやってもうまくいかなかったので、グーグルから に えればよかった.