[ブロックチェーンノート11]web 3.js実用コードセグメント


環境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が ではないと っています. いことやってもうまくいかなかったので、グーグルから に えればよかった.